java 左移和右移
今天搜到一個(gè)比較好用的在線編譯器,希望和大家分享。
除了java還有c++....,地址是http://www.tutorialspoint.com/compile_java_online.php
另外今天再次復(fù)習(xí)了java左移和右移,這里針對負(fù)數(shù)舉個(gè)例子:
正數(shù)和負(fù)數(shù)在java中是以補(bǔ)碼的形式表示
例如-2 在計(jì)算機(jī)中表示為 11111111 11111111 11111111 11111110
1.左移
-2<<2 即-2左移2位的結(jié)果是:11111111 11111111 11111111 11111000 (低位補(bǔ)0)
上面是補(bǔ)碼,最高位為1表明這是負(fù)數(shù),負(fù)數(shù)的補(bǔ)碼是對正數(shù)的原碼進(jìn)行:“最高位為1,其余各位取反,最后加1”得到的。
所以反推一下,就可以知道 -2<<2的結(jié)果實(shí)際上表示的數(shù)是10000000 00000000 00000000 00001000 (-8)
2.右移
高位是1則補(bǔ)1,高位是0則補(bǔ)0
-2>>2 : 11111111 11111111 11111111 11111111
10000000 00000000 00000000 00000001 (-1)
3.移位操作符可以和'='聯(lián)合起來用
a<<=2表示a左移2位后的值再賦給a
4.補(bǔ)充一下:java 虛擬機(jī)屏蔽了大端小端的問題,內(nèi)部都是小端。
相關(guān)文章:
