Q1:二进制转换
题目
获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
输入
valueAtBit(128, 8)
输出
1
代码
//解法一:对num进行模2计算
function valueAtBit(num, bit) {
var k = 1;
var mod;
while (num) {
mod = num % 2;
if (k == bit) {
return mod;
}
k++;
num = (num - mod) / 2;
}
}
// toString()
function valueAtBit(num, bit) {
var s = num.toString(2);
return s[s.length - bit];
}
// 利用&运算
function valueAtBit(num, bit) {
return (num >> (bit - 1)) & 1;
}
Q2:二进制转换
题目
将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
输入
convertToBinary(65)
输出
01000001
代码:
// method 1
function convertToBinary(num) {
var s = num.toString(2);
for(var i=0;i<8-s.length;i++){
s='0'+s;
}
return s;
}
// method 2
function convertToBinary(num) {
var s = num.toString(2);
if(s.length < 8){
return ('00000000'+s).substr(-8);
}
return s;
}