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

题目描述

获取数字 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,输出的就只有第一位上的数字,也即是我们需要的那个

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值