java中的移位操作
生活随笔
收集整理的這篇文章主要介紹了
java中的移位操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、左移 <<
- 二、右移
- 1、有符號右移 >>
- 2、無符號右移>>>
- 三、補充
一、左移 <<
向左移動,高位丟棄,低位用0補齊
不溢出的情況下num<<1相當于num*2
例如
二、右移
1、有符號右移 >>
向右移動,高位用符號位補齊,低位丟棄
不溢出的情況下num>>1相當于num/2
任何一個負數,如果一直右移下去,最終都會得到 -1
System.out.println(Integer.toBinaryString(i >> 31)); //(i < 0)// 11111111111111111111111111111111(-1)2、無符號右移>>>
向右移動,高位用0補齊,低位丟棄
int i = -3;System.out.println(Integer.toBinaryString(i));// 11111111111111111111111111111101System.out.println(Integer.toBinaryString(i >>> 1));// 1111111111111111111111111111110(第一位的0沒有顯示)System.out.println(i >>> 1);// 2147483646任何一個數,如果一直無符號右移下去,最終都會得到0
System.out.println(i >>> 31 >>> 1);三、補充
當移位的位數大于或等于數據類型的表示位數時,會先對移位的位數取模
舉個例子:對于int,其表示位數時32位,如果我們要對一個int型的整數num做移位操作,
移動位數為33,那么,計算時會先將33對32取模得到1,然后對num進行1位的移位操作。
如果移動位數是32,那么,不做操作
這也是我上面最后一行代碼對i的移位分兩次
System.out.println(i >>> 31 >>> 1)和System.out.println(i >>> 32)的結果是不一樣的
總結
以上是生活随笔為你收集整理的java中的移位操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Idea系列文章2-依赖包的引入
- 下一篇: 地球HTML代码