`>>`(有符号右移) 和 `>>>`(无符号右移)的区别
作者:互联网
JavaScript >>
(有符号右移) 和 >>>
(无符号右移)的区别
之所以以 JS 为例,是因为Java中不支持无符号操作
直接看MDN英文吧:
>> (有符号右移)
sign-propagating(符号位-传播)右移
我们知道,计算机中以二进制存储数字,二进制中最左边的第一位,叫符号位,所以这就很明显了,右移2位后,最左边缺少2位数字,那就应该填充数字,那填充什么呢?符号位是什么,我就填什么,所以 -9 >> 2
中最左边2位和符号位一样,都是1。
>>> (无符号右移)
zero-fill(零-填充)
这个就更明显了,直接就说了,用0填充,所以右移后空位不管你符号位是啥,我都只填0。
总结
因此,我们所说的 有符号、无符号 看的就是二进制的符号位
- 无符号:就是不管符号位,右移只填充0;
- 有符号:就是符号位是啥,我就填充啥。Java中也是同理。
标签:右移,Java,填充,区别,二进制,位是,符号 来源: https://blog.csdn.net/sinat_42483341/article/details/113483631