2017年計(jì)算機(jī)二級(jí)考試java章節(jié)輔導(dǎo):位運(yùn)算符

字號(hào):


    § 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