位运算
* 获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
input: 128, 8
output: 1
function valueAtBit(num, bit) {
// 1000 0000
return num & 1<<(bit-1) ? 1 : 0;
}
* 给定二进制字符串,将其换算成对应的十进制数字
input: '11000000'
output: 192
function base10(str) {
var a = str.split('').map(function(c) {
return c==='1'?1:c==='0'?0:NaN;
});
function _base10(a, n) {
if (n===1) {
return a[0];
}
// priority: + > <<
return (_base10(a,n-1)<<1) + a[n-1];
}
return _base10(a, a.length);
}
* 将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
input: 65
output: 01000001
function convertToBinary(num) {
var a = [0,0,0,0,0,0,0,0];
function _convert(num, a, n) {
if (n===1) {
a[0] = num;
return;
}
a[n-1] = num % 2;
_convert(num>>1, a, n-1);
}
_convert(num, a, a.length);
return a.map(function(i) {
return i===0 ? '0' : i===1 ? '1':NaN;
}).join('');
}
浙公网安备 33010602011771号