获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
let arr=[] while(num>0){ let temp = num%2; arr.push(Math.floor(temp)); num = num/2; } return arr[bit-1];
function valueAtBit(num, bit) { while(--bit){ num = num >> 1; } return num & 1 }
// 方法一 直接使用原生的方法,字符串转二进制 ==> 分割为数组 ==> 反转数组访问 function valueAtBit(num,bit) { return num.toString(2).split('').reverse()[bit - 1] // 注意:最后返回值是string类型 } // 方法二 模拟除法运算 function valueAtBit(num,bit) { let res = 0 for(let i = 0; i < bit; i++) { res = num % 2 num = parseInt(num / 2) } return res }
// FED48二进制转换 // 描述 // 获取数字 num 二进制形式第 bit 位的值。注意: // 1、bit 从 1 开始 // 2、返回 0 或 1 // 3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1 // 示例1 // 输入: // 128, 8 // 输出: // 1 function valueAtBit(num, bit) { // 解法1 将num转变成二进制字符数组 let binary = num.toString(2).split(""); return binary[binary.length - bit]; // // 解法2 利用位运算符‘&’ // return num & Math.pow(2,bit-1) ? 1 : 0; // // 解法3 与解法2类似,多用一个位运算符“>>” // return (num >> (bit-1)) & 1; }