题解 | #二进制转换#

二进制转换

http://www.nowcoder.com/practice/2c7f25d532aa4e20b67af9d3c93dc65f

方法一:toString()
Number.toString([radix]):
返回指定 Number 对象的字符串表示形式;radix指定要用于数字到字符串的转换的基数(从2到36)。如果未指定 radix 参数,则默认值为 10

function valueAtBit(num, bit) {
    let Num2Str = num.toString(2)
    return Num2Str[Num2Str.length - bit]
}

方法二:位运算

&: 与 两个位都为1时,结果才为1
|: 或 两个位都为0时,结果才为0
^: 异或 两个位相同为0,相异为1
~: 取反 0变1,1变0
<<: 左移 各二进位全部左移若干位,高位丢弃,低位补0
'>>: 右移各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

先将num右移bit-1位,拿到第bit位。如128二进制表示位10000000,右移7位得到00000001,1就是第bit位。要取得该位,&1即可

function valueAtBit(num, bit) {
    return (num >> (bit - 1)) & 1;
}
全部评论

相关推荐

2024-12-27 10:21
已编辑
海南师范大学 媒介策划
到我怀里来:身高体重住址这些就别写了,留几个关键的就行,工作经历突出重点写详细点
点赞 评论 收藏
分享
2024-12-12 11:28
已编辑
门头沟学院 广告设计
HaWK2n:姐,你那在校时间写的都不对吧,你要写你的入学时间而不是学校改名的时间,就算是学校改名字了也应该写个括号加上,而不是一会山东航空学院一会滨州学院
点赞 评论 收藏
分享
评论
31
1
分享

创作者周榜

更多
牛客网
牛客企业服务