算法基础题(6):10进制二进制的相互转换

1.进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。
2.对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。


我们还是用栈的原理来实现进制转换,首先模拟一个栈。

//模拟封装栈
        function Stack() {
            this.item = []; //定义空数组来接收二进制数

            //把数据存进栈
            Stack.prototype.push = function (element) { //定义原型方法
                return this.item.push(element + ' ');
            }

            //把数据从栈中拿出来
            Stack.prototype.pop = function () {
                return this.item.pop();
            }

            //判断栈是否为空
            Stack.prototype.isNull = function () {
                return this.item.length == 0
            }
        }

一、十进制转换成二进制

//10进制转换二进制
        function ten_Adapter_Two(numbers) {

            let stack = new Stack(); //实例一个栈

            while (numbers > 0) {  //判断numbers是否为0
                stack.push(numbers % 2);  //把余数存进栈中

                numbers = Math.floor(numbers / 2);  //取每次除以二的整数
            }

            //从栈中取出0和1
            let binaryString = '';
            while (!stack.isNull()) {  //判断this.item是否为空
                binaryString += stack.pop();
            }

            return binaryString
        }
console.log(ten_Adapter_Two(100)); // 1100100

二、二进制转换成十进制

//二进制转换10进制
        function two_Adapter_Ten(numbers) {

            let stack = new Stack();
            let StringNumbers = String(numbers);

            while(StringNumbers.length > 0){         //类似于:1 * 2的6次幂
                stack.push(Number(StringNumbers[0]) * Math.pow(2,StringNumbers.length - 1));  //使用Math.pow次幂
                StringNumbers = StringNumbers.slice(1,StringNumbers.length)  //每次都把第一位删除掉
            }

            let twoNumber = 0;
            while(!stack.isNull()){
                twoNumber += Number(stack.pop());  //从栈中取出累加
            }

            return twoNumber
            
        }
console.log(two_Adapter_Ten(1100100));// 100

而且在如今,计算机更是借助进制来实现高效开发,在电子计算机中采用二进制表示数可以节省设备。可 以从理论上证明,用三进位制最省设备,其次就是二进位制。但由于二进位制有包括三进位制在内的其他进位制所没有的优点,所以大多数电子计算机还是采用二进制。由于二进制中只用二个符号 “ 0” 和“1”,所以,任何具有二个不同稳定状态的元件都可用来表示数的某一位
至于其他进制转换原理类似!谢谢!

你可能感兴趣的:(算法基础题(6):10进制二进制的相互转换)