成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java的位移運算巧方法

開發 后端
Java對移位運算"a <<||>> b"的處理,首先做 b mod 32||64運算, 如果a是int型,取mod 32,如果a是double型,取mod 64,然后再使用上面提到的通用移位運算規則進行移位。

左移操作: 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=n%32);

如果x是long型, 則n被重新賦值(過程是:取n的補碼的低6位再轉成十進制的int值,相當對n取64模: n=n%64);

(因為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代碼

  1. // 左移: 向左移動,右邊補0   
  2.   for (int i = 0;i < 8 ;i++)   
  3.   System.out.print( (1 << i) + " "); 

output

1 2 4 8 16 32 64 128

  1. // 右移: 向右移動,如果符號位(int型為32位)為0,左邊補0,符號位為1,左邊補1   
  2.   // 符號位為1的右移   
  3.   for (int i = 0;i < 8 ;i++)   
  4.   System.out.print( Integer.toHexString(0x40000000 >> i) + " "); 

output

40000000 20000000 10000000 8000000 4000000 2000000 1000000 800000

  1.  // 符號位為1的右移   
  2.   // 最高4位為1000, 右移1位,變成1100也就是c,   
  3.   for (int i = 0;i < 8 ;i++)   
  4.   System.out.print( Integer.toHexString(0x80000000 >> i) + " "); 

output

80000000 c0000000 e0000000 f0000000 f8000000 fc000000 fe000000 ff000000

上面的通用法則沒有錯,但是有一個限制,對int型,移位的位數不超過32,對long型,移位的位數不超過64?,F在進行如下測試:

Java代碼

  1. System.out.println(Integer.toHexString(0x80000000 >> 31));   
  2.   // output: ffffffff   
  3.   System.out.println(Integer.toHexString(0x80000000 >> 32));   
  4.   // output: 80000000 

0x80000000在右移31位后,每個位都成了1(也就是-1),按照這個想法,右移32位理所當然的還是-1,可是右移32位后,得到的結果卻又這個數本身。

通過對int,long類型數據左右移進行測試,發現:

Java對移位運算"a <<||>> b"的處理,首先做 b mod 32||64運算, 如果a是int型,取mod 32,如果a是double型,取mod 64,然后再使用上面提到的通用移位運算規則進行移位。

到這里,就可以理解為什么在BitSet類中是

  1. 1L << bitIndex 

這條語句,因為熟悉jdk的Programer知道,再寫 1L << (bitIndex % 64) 對jdk來說是多余的。

原文連接:http://blog.csdn.net/hopezhangbo/article/details/7348740

【編輯推薦】

  1.  Java7的一個新類JLayer:裝飾的Swing組件
  2. 關于Java中內存溢出的解決辦法
  3. Java中的面向對象特性
  4. 探究Java初始化的過程
  5. Java集合框架的知識總結
責任編輯:林師授 來源: hopezhangbo的博客
相關推薦

2009-12-24 16:20:19

Linux破解PHP

2010-07-29 09:18:40

2011-05-05 09:27:07

傳真機CCD

2010-12-01 11:29:11

職場

2012-05-08 10:22:47

Windows系統硬件

2009-08-16 16:11:05

2010-09-17 13:45:40

JVM termina

2011-04-12 16:01:04

MySQL查詢編寫

2009-07-16 13:30:12

resultMapgroupBy屬性

2010-01-13 15:46:21

2009-01-05 09:47:17

2023-10-29 09:11:03

DSL語法

2014-09-01 15:33:24

Lua語言基礎table構造方式

2015-08-14 09:37:44

Java字符串基本運算

2016-02-15 09:25:00

R語言運算效率大數據

2025-02-07 10:54:07

2013-08-02 09:34:11

平臺即服務PaaSPaaS平臺

2009-11-18 16:39:33

Oracle數據庫聯機

2011-03-03 10:31:42

數據庫

2010-11-19 15:44:04

IT跳槽
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频在线观看 | 久久精品视频一区二区 | 在线观看国产精品一区二区 | 国产精品大全 | 每日更新av | 999热精品 | 51ⅴ精品国产91久久久久久 | 欧美激情一区二区三区 | 国产在线一区二区三区 | 国产一区二区久久 | 欧美成人一区二免费视频软件 | 亚洲精精品 | 亚洲手机视频在线 | 久久精品网 | 日韩欧美精品一区 | 一区二区三区四区视频 | 81精品国产乱码久久久久久 | 欧美精品一区二区在线观看 | 久久精品国产一区二区电影 | 日韩 欧美 综合 | 欧美日韩中文字幕在线 | 成人h片在线观看 | 亚洲二区在线观看 | 91资源在线 | 日日夜夜天天 | 日韩一区二区在线看 | 成人妇女免费播放久久久 | 操久久| 国产精品一二三区 | 91社区在线观看播放 | 嫩草视频入口 | 久久国产精品一区二区 | 久久久久久久久久久福利观看 | 精品国产乱码久久久久久1区2区 | av电影一区 | 欧美电影一区 | 欧美专区在线 | 成人午夜网站 | 91一区二区三区在线观看 | 99在线精品视频 | 操久久 |