十进制转二进制
十进制转二进制的方法
-
toString()方法
toSrting()方法可把一个 Number 对象转换为一个字符串NumberObject.toString(radix); radix为可选参数,表示数字的基数,把radix设为2,即可得到二进制的字符串。
除2取余法
- 题目1
获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
示例
//输入
128, 8
//输出
1方法一
利用除2取余法得到数字num二进制的字符串,此方法得到的字符串正好是反转的二进制字符串,所以直接取bit位的值即可。
function valueAtBit(num, bit) {
var num2 = [];
while(num !== 0){
num2.push(num%2);//取余
num = parseInt(num/2);//取整
}
return num2[bit-1];
}方法二
利用num.toString()方法得到数字num的二进制字符串,bit位置是从后往前取的,所以length-bit才是字符串从前往后取的位置。
function valueAtBit(num, bit) {
var num2 = num.toString(2);
return num2[num2.length-bit];
}
valueAtBit(128, 8);- 题目2
将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
示例
//输入
65
//输出
01000001方法一
先用num.toString()方法将数字num转换为二进制的字符串,再用while语句判断其长度有没有超过8,大于8就直接输出结果,小于8就在字符串前加’0’,直到为长度为8再输结果。
function convertToBinary(num) {
var str = num.toString(2);
while(str.length<8){
str = '0' + str;
}
return str;
}方法二
先用num.toString()将数字num转换为二进制的字符串str,从一个长度为8的字符串’00000000’中截取出一部分,以str的长度为截取的开始下标,当str的长度大于8则截取的字符串为空,若小于8则截取出的字符串+二进制字符串的长度刚好为8。
function convertToBinary(num) {
var str = num.toString(2);
return '00000000'.slice(str.length)+str;
}二进制转十进制
二进制转十进制的方法
-
parseInt(Number, 2)
直接求出Number的十进制。 - 将二进制字符串转换为数组进行计算,十进制用(整数)二进制用数值乘以2的幂次依次相加。
题目描述
给定二进制字符串,将其换算成对应的十进制数字。
示例
//输入
'11000000'
//输出
192方法一
直接使用parseInt()方法转换。
function base10(str) {
return parseInt(str,2);
}方法二
先将二进制字符串转换为数组,再进行遍历计算十进制。
function base10(str) {
//直接输出的方法
//return str.split('').reverse().reduce((sum,e,i) => sum += e*Math.pow(2,i),0);
//转化为数组,然后遍历计算的方法
var num10 = 0;
var arr = str.split('');
var len = arr.length;
for(let i=0; i<len; i++){
num10 += arr[i]*Math.pow(2,len-i-1);
}
return num10;
}
















