问题描述:
获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
我的解决方案
受按位与操作的启发,将该数字与2的n次方按位与,结果为0则返回0,否则返回11234567891011function valueAtBit(num, bit) { if(bit == 1){ return num%2; } var tmp = 1; while (bit>1){ tmp *= 2; bit--; } return tmp & num ?1:0;}
其他方案1
toStirng()方法将数字转换为二进制字符串,charAt()函数取字符串的第几个12345function valueAtBit(num, bit) { var str = num.toString(2); var chr = str.charAt(str.length-bit); return parseInt(chr,10);}
其他方案2
将该数字右移(>>)bit-1位,然后与1按位与123function valueAtBit(num, bit) { return (num >> (bit -1)) & 1;}