如何解决移位运算符仅在移位到16位时才起作用
我一直都在努力寻找答案,因此很高兴结束该问题(如果重复的话)。我想获得具有8位数字的十六进制数字的前2位数字。
我知道gtest.cc
将x位向右移动。因此,>>
最终会在0b10 >> 1
所有后6位数字有效。 最后2个十六进制数字:
0b01
从右边开始的第3和第4个十六进制数字:
0x000000FF >> 0 // 255
0b00000000000000000000000011111111 >> 0 == 0b00000000000000000000000011111111 // == 255
第5个和第6个十六进制从右开始:
0x0000ff00 >> 8 // 255
0b00000000000000001111111100000000 >> 8 == 0b00000000000000000000000011111111 // == 255
尝试从rigth中获取第7个和第8个十六进制数字,或者从左侧获取前2个十六进制数字,应将所有位向右移动24位:
0x00ff0000 >> 16
0b00000000111111110000000000000000 >> 16 == 0b00000000000000000000000011111111 // == 255
如何让0xff000000 >> 24
0b11111111000000000000000000000000 >> 24 => Should be 255,but it is -1
达到255?
解决方法
答案很简单,>>
运算符是signed shift operator,所以您只需使用an unsigned version >>>
:
console.log(0xff000000 >> 24)
console.log(0xff000000 >>> 24)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。