获取二进制数中某一位的值

版权声明: https://blog.csdn.net/qq_39207948/article/details/81396202

题目描述

获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1

示例1

输入

复制

128, 8

输出

复制

1

我的解答:

function valueAtBit(num, bit) {
    var str=num.toString(2);
    return str[str.length-bit];

 }

利用toString()函数,将数字转化为了二进制字符串,然后字符串长度和位的关系将其取出

其他解答:

function valueAtBit(num, bit) {

    return (num >> (bit -1)) & 1;

}

利用了移位操作,之前没有接触过这种解法,理解之后感觉相当简洁

以上面的示例分析,128,8-》1;

128->1000 0000;要想将第八位上的数字取出,可以将她移到第一位上,也即是向右移动7位变成0000 0001,怎样将第一位上的1拿出来呢,可以利用与操作,让0000 0001,与1(0000 0001)与,除了第一位上的数是它本身,其余位全部变成了0,这样就将第一位取了出来。

自己可以写个二进制数字分析下,如:1000 0000 第八位是1,要想将他移到第一位上,移动的就是bit-1位,之后让它和1与,这样就能将除了第一位之外的其他位上的数字置0,输出的就只有第一位上的数字,也即是我们需要的那个

猜你喜欢

转载自blog.csdn.net/qq_39207948/article/details/81396202
今日推荐