轉(zhuǎn)帖|其它|編輯:郝浩|2011-08-24 14:16:57.000|閱讀 343 次
概述:本文主要講講Java的位移運(yùn)算巧方法,希望對大家有幫助。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
左移操作: x 《《 n
x可以是byte, short, char, int, long基本類型, n(位移量)只能是int型
編譯器的執(zhí)行步驟:
1) 如果x是byte, short, char類型, 則將x提升為int;
2) 如果x是byte, short, char, int類型, 則n被重新賦值(過程是:取n的補(bǔ)碼的低5位再轉(zhuǎn)成十進(jìn)制的int值,相當(dāng)對n取32模: n=n2);
如果x是long型, 則n被重新賦值(過程是:取n的補(bǔ)碼的低6位再轉(zhuǎn)成十進(jìn)制的int值,相當(dāng)對n取64模: n=nd);
(因?yàn)閕nt類型為4個(gè)字節(jié),即32位,移動(dòng)32位將沒有任何意義.對于long則是模64)
3) 對x左移n個(gè)位數(shù), 整個(gè)表達(dá)式產(chǎn)生一個(gè)新值(x的值不變);
《《是左移符號(hào),列x《《1,就是x的內(nèi)容左移一位(x的內(nèi)容并不改變)
》》是帶符號(hào)位的右移符號(hào),x》》1就是x的內(nèi)容右移一位,如果開頭是1則補(bǔ)1,是0責(zé)補(bǔ)0,(x的內(nèi)容并不改變).
》》》是不帶符號(hào)位的右移,x》》》1就是x的內(nèi)容右移一位,開頭補(bǔ)0(x的內(nèi)容并不改變)
補(bǔ)充說明:
Java代碼
// 左移: 向左移動(dòng),右邊補(bǔ)0
for (int i = 0;i < 8 ;i++)
System.out.print( (1 << i) + " ");
// 右移: 向右移動(dòng),如果符號(hào)位(int型為32位)為0,左邊補(bǔ)0,符號(hào)位為1,左邊補(bǔ)1
// 符號(hào)位為1的右移
for (int i = 0;i < 8 ;i++)
System.out.print( Integer.toHexString(0x40000000 >> i) + " ");
output
40000000 20000000 10000000 8000000 4000000 2000000 1000000 800000
// 符號(hào)位為1的右移
// 最高4位為1000, 右移1位,變成1100也就是c,
for (int i = 0;i < 8 ;i++)
System.out.print( Integer.toHexString(0x80000000 >> i) + " ");
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載