js 栈(进制转换)

<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>
posted @ 2017-12-07 19:33  mysure  阅读(226)  评论(0编辑  收藏  举报