`>>`(有符号右移) 和 `>>>`(无符号右移)的区别
生活随笔
收集整理的這篇文章主要介紹了
`>>`(有符号右移) 和 `>>>`(无符号右移)的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JavaScript >>(有符號右移) 和 >>>(無符號右移)的區別
之所以以 JS 為例,是因為Java中不支持無符號操作
直接看MDN英文吧:
>> (有符號右移)
sign-propagating(符號位-傳播)右移 我們知道,計算機中以二進制存儲數字,二進制中最左邊的第一位,叫符號位,所以這就很明顯了,右移2位后,最左邊缺少2位數字,那就應該填充數字,那填充什么呢?符號位是什么,我就填什么,所以 -9 >> 2 中最左邊2位和符號位一樣,都是1。
>>> (無符號右移)
zero-fill(零-填充) 這個就更明顯了,直接就說了,用0填充,所以右移后空位不管你符號位是啥,我都只填0。
總結
因此,我們所說的 有符號、無符號 看的就是二進制的符號位
- 無符號:就是不管符號位,右移只填充0;
- 有符號:就是符號位是啥,我就填充啥。Java中也是同理。
總結
以上是生活随笔為你收集整理的`>>`(有符号右移) 和 `>>>`(无符号右移)的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java位操作:如何将long类型的指定
- 下一篇: IDEA如何设置鼠标滚轮调整字体大小