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”,所以,任何具有二个不同稳定状态的元件都可用来表示数的某一位。
至于其他进制转换原理类似!谢谢!