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