§ 3.4位運(yùn)算符
位運(yùn)算符用來(lái)對(duì)二進(jìn)制位進(jìn)行操作,Java中提供了如下表所示的位運(yùn)算符 :
位 運(yùn) 算 符 中 ,除 ~ 以 外 ,其余均為二元運(yùn)算符 。
操 作 數(shù) 只 能 為 整 型 和 字 符 型 數(shù) 據(jù) 。
3.4.1補(bǔ) 碼
Java使用補(bǔ)碼來(lái)表示二進(jìn)制數(shù) ,在補(bǔ)碼表示中 ,位為符號(hào)位 ,正數(shù)的符號(hào)位為0,負(fù)數(shù)為 1。 補(bǔ)碼的規(guī)定如下 :
對(duì) 正 數(shù) 來(lái) 說(shuō) ,最 高 位 為 0,其 余 各 位 代 表 數(shù) 值 本 身 (以 二 進(jìn) 制 表 示 ),如 +42的 補(bǔ) 碼 為 00101010。
對(duì)負(fù)數(shù)而言,把該數(shù)絕對(duì)值的補(bǔ)碼按位取反,然后對(duì)整個(gè)數(shù)加1,即得該數(shù)的補(bǔ)碼 。 如-42的 補(bǔ) 碼 為 11010110 (00101010 按 位 取 反 11010101 +1 11010110 ) 用補(bǔ)碼來(lái)表示數(shù),0的補(bǔ)碼是的,都為00000000。 (而在原碼,反碼表示中,+0和 -0的表示是不的,可參見(jiàn)相應(yīng)的書(shū)籍 )。而且可以用111111表示 -1的補(bǔ)碼(這也是補(bǔ)碼與原碼和反碼的區(qū)別)。
3.4.2按位取反運(yùn)算符 ~
~ 是一元運(yùn)算法,對(duì)數(shù)據(jù)的每個(gè)二進(jìn)制位取反 ,即把 1變?yōu)?0,把0變?yōu)?。
例 如 :
0010101
~
1101010
注 意 ,~ 運(yùn)算符與 - 運(yùn)算符不同 ,~ 21≠ -21。
3.4.3按 位 與 運(yùn) 算 符 &
參與運(yùn)算的兩個(gè)值,如果兩個(gè)相應(yīng)位都為1,則該位的結(jié)果為 1,否則為0。 即 :
0 & 0 = 0,0 &1 = 0,1 & 0 = 0,1 & 1 = 1

