java移位運(yùn)算符(轉(zhuǎn)載)
a)“>>”運(yùn)算符
“>>”運(yùn)算符作帶符號(hào)的位移處理,它作位移處理時(shí),會(huì)先將值向右移,并在高位填0,然后將位移后所空出的高位,全部改成原來(lái)的最高位的值(代表正負(fù)號(hào)的位)。也就是說(shuō)負(fù)的值位移后,仍然是負(fù)的值,比如:
-10>>2 =-3
-10= 1111 1111 1111 1111 1111 1111 1111 0110
右移2位:0011 1111 1111 1111 1111 1111 1111 1101
結(jié)果:1111 1111 1111 1111 1111 1111 1111 1101 (全部天上原本符號(hào)位的值:1)
b)“>>>”運(yùn)算符
“>>>”運(yùn)算符所作的是無(wú)符號(hào)的位移處理,它不會(huì)將所處理的值的最高位視為正負(fù)符號(hào),所以作位移處理時(shí),會(huì)直接在空出的高位填入0。當(dāng)我們要作位移的原始值并非代表數(shù)值時(shí)(例如:表示顏色圖素的值,最高位并非正負(fù)號(hào)),可能就會(huì)需要使用此種無(wú)符號(hào)的位移。比如:
-10>>>2=1073741821
-10=1111 1111 1111 1111 1111 1111 1111 0110 (不管原來(lái)的“符號(hào)”位的值(一長(zhǎng)串1),空上的全部直接填0)
0011 1111 1111 1111 1111 1111 1111 1101=1037341821
c)“<<”運(yùn)算符
“>>”運(yùn)算符的所作的也是無(wú)符號(hào)的位移處理,同樣地,它不會(huì)將所處理的值的最高位視為正負(fù)符號(hào),它作位移處理時(shí),會(huì)直接左移并在低位填入0。所以第二高位以下的位若移到了最高位,該值的正負(fù)可能會(huì)與原來(lái)的不同。
-2147483647<<2=4
-2147483647=1000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0100=4
d)“<<<”運(yùn)算符
恩,當(dāng)然了,在java里不存在它。
posted on 2008-03-18 09:51 agun 閱讀(3675) 評(píng)論(3) 編輯 收藏 所屬分類: java 基礎(chǔ)