JS位移问题
【摘要】 移位操作要注意的问题是高(低)位是补0还是补1,具体操作如下:(1)<< : (left-shift), 最低位补0。(2)>> : (signed right-shift),右移过程使用符号位扩展(sign extension),即如果符号为为1则高位补1, 是0则补0,也就是逻辑右移。(3)>>> : (unsigned righ...
移位操作要注意的问题是高(低)位是补0还是补1,具体操作如下:
(1)<< : (left-shift), 最低位补0。
(2)>> : (signed right-shift),右移过程使用符号位扩展(sign extension),即如果符号为为1则高位补1, 是0则补0,也就是逻辑右移。
(3)>>> : (unsigned right-shit),右移过程使用零扩展(zero extension),即最高位一律补0,也就是算术右移。
(4)移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时,会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进行操作。
(5)移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意。
(6)JS没有专门的无符号左移操作(<<<)。
(1)<< : (left-shift), 最低位补0。
(2)>> : (signed right-shift),右移过程使用符号位扩展(sign extension),即如果符号为为1则高位补1, 是0则补0,也就是逻辑右移。
(3)>>> : (unsigned right-shit),右移过程使用零扩展(zero extension),即最高位一律补0,也就是算术右移。
(4)移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时,会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进行操作。
(5)移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意。
(6)JS没有专门的无符号左移操作(<<<)。
文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。
原文链接:liuzhen.blog.csdn.net/article/details/80602400
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)