<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
function stack(){
item = []
// 添加栈
this.push = function(element){
item.push(element);
}
// 移除栈
this.pop = function(){
return item.pop();
}
// 检查栈是否为空
this.isEmpty= function(){
return (item.length == 0);
}
// 显示栈最上面那个元素
this.peek = function(){
return item[item.length-1];
}
}
// 二进制度转化
function binary( decNumber ){
var remStack = new stack();
var rem , binaryString='';
// 当传入的值必须大于0
while( decNumber > 0 ){
rem = Math.floor( decNumber % 2 ); // 取除以2的余数,只有 0 或者 1 10/2 5余0 21/2 10-1
remStack.push( rem ); // 将得出的数值添加到数组当中去
decNumber = Math.floor( decNumber/2 )//每除一次再除一次
}
// 将得出的值反转
while( !remStack.isEmpty() ){
// 出栈 ,从顶部开始
binaryString += remStack.pop().toString();
}
return binaryString;
}
// 其他进制的转换 --> 传入 要转换的数值, 要转换的进制
function SysConvert( decNumber, base ){
var remStack = new stack();
var rem,
baseString = '',
digits='0123456789ABCDEF';
while( decNumber > 0){
rem = Math.floor( decNumber % base );
remStack.push(rem);
decNumber = Math.floor( decNumber / base );
}
while( !remStack.isEmpty() ){
// 出栈 ,从顶部开始
baseString += digits[ remStack.pop() ];
}
return baseString;
}
console.log( binary(100) ); //
console.log( SysConvert( 100, 10) )
// 总结
// 错误问题:没有写() 进行语句执行
// digit 少些一个0 出现了 +1 的数字
</script>
</body>
</html>