首页 > 试题广场 >

二进制转换

[编程题]二进制转换
  • 热度指数:43677 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
示例1

输入

128, 8

输出

1
function valueAtBit(num = 0, bit) {
  const str = num.toString(2).split('').reverse()
  return str[(bit - 1)]
}

发表于 2023-06-29 10:31:49 回复(0)
function valueAtBit(num, bit) {
    var str=  num.toString(2)
    return str.substr(-bit,1)
}
欧耶2
发表于 2023-06-04 10:30:09 回复(0)
    function valueAtBit(num, bit) {
    let ar=num.toString(2)
    ar1=ar.split('').reverse()
    return ar1[bit-1]
}
发表于 2023-05-12 10:12:14 回复(0)
    let arr=[]
            while(num>0){
                let temp = num%2;
                arr.push(Math.floor(temp));
                num = num/2;
            }
            return arr[bit-1];

发表于 2022-11-26 00:31:55 回复(0)
function valueAtBit(num, bit) {
            if(bit < 1) return
            let newNum = num.toString(2)
            let arr = Array.from(newNum).reverse()
            return arr[bit-1]
}
发表于 2022-11-17 00:00:03 回复(0)
function valueAtBit(num, bit) {
    let length = parseInt(num).toString(2).length
    return parseInt(num).toString(2).charAt(length - bit)
}
发表于 2022-10-26 09:25:20 回复(0)
function valueAtBit(num, bit) {
    while(--bit){
       num =  num >> 1;
    }
    return num & 1
}

发表于 2022-08-19 17:36:01 回复(0)
function valueAtBit(num, bit) {
    return num.toString(2).split('').reverse().splice(bit-1,1)
}
发表于 2022-08-18 17:54:07 回复(0)
function valueAtBit(num, bit) {
    return num.toString(2).charAt(num.toString(2).length - bit)
}

发表于 2022-07-31 21:16:49 回复(0)
function valueAtBit(num, bit) {
    const numstr = num.toString(2);
    return numstr.split('').reverse()[bit - 1];
}
发表于 2022-07-23 18:15:56 回复(0)
function valueAtBit(num, bit) {
    return Array.from(num.toString(2)).reverse()[bit-1];
}

发表于 2022-02-15 17:44:52 回复(0)
function valueAtBit(num, bit) {
    return [...num.toString(2)].reverse()[bit-1];
}

发表于 2021-12-03 22:17:32 回复(0)
function valueAtBit(num, bit) {
    let str=num.toString(2)
    return str.charAt(str.length-bit)
}

发表于 2021-11-28 16:42:17 回复(0)
function valueAtBit(num, bit) {
    let divided = num
    let result = []
    
    while (divided >= 1) {
        result.push(divided % 2)
        divided = Math.floor(divided / 2)
    }
    
    return result[bit - 1]
}

发表于 2021-09-09 12:39:00 回复(0)
// 方法一 直接使用原生的方法,字符串转二进制 ==> 分割为数组 ==> 反转数组访问
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
}
发表于 2021-09-01 15:05:52 回复(0)
// 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; 
}

发表于 2021-08-10 20:14:41 回复(0)
function valueAtBit(num, bit) {
    
    while (--bit > 0) {
        num = Math.floor(num / 2)
    }
    
    return num % 2
}

发表于 2021-08-08 00:12:06 回复(0)