java位移運算符2 轉

https://blog.csdn.net/xxx134617/article/details/7454774java

java中int類型佔4個字節,二進制用補碼錶示:.net

3的二進制表示: 00000000 00000000 00000000 00000011對象

-3的二進制表示:11111111 11111111 11111111 11111101blog

 

1.左移<<:左移位運算符(<<)能將運算符左邊的運算對象向左移動運算符右側指定的位數(在低位補0).源碼

如:擴展

3<<1=00000000 00000000 00000000 00000110=6;二進制

-3<<1=11111111 11111111 11111111 11111010=-6;計算機

2.有符號右移>>:「有符號」右移位運算符(>>)則將運算符左邊的運算對象向右移動運算符右側指定的位數。「有符號」右移位運算符使用 了「符號擴展」:若值爲正,則在高位插入0;若值爲負,則在高位插入1。移動

3>>1=00000000 00000000 00000000 00000001=1;位運算

-3>>1=11111111 11111111 11111111 11111110=-2;

3.無符號右移:

3>>>1=00000000 00000000 00000000 00000001=1;

-3>>>1=01111111 11111111 11111111 11111110=2147483646;
---------------------

計算過程:

-3的源碼:

10000000 00000000 00000000 00000011

反碼:除符號位取反

11111111 11111111 11111111 11111100

補碼:除符號位+1

11111111 11111111 11111111 11111101

-3<<1

計算機中的二進制表示(-3的二進制補碼)

11111111 11111111 11111111 11111010

轉十進制數

1)除去符號位減1

11111111 11111111 11111111 11111001 

2)除去符號位,按位取反;結果就是負數的源碼;

10000000 00000000 00000000 00000110 

-                  6

相關文章
相關標籤/搜索