按位運(yùn)算符是把數(shù)字看作是二進(jìn)制來進(jìn)行計(jì)算的甥郑。 下表中變量 a 為 60袱饭,b 為 13孟害,二進(jìn)制格式如下:
a = 0011 1100 # 60的二進(jìn)制
b = 0000 1101 # 13的二進(jìn)制
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
& | 按位‘與’運(yùn)算符:參與運(yùn)算的兩個(gè)值腕让,如果兩個(gè)相應(yīng)位都為1,則該位結(jié)果為1悦昵,否則為0肴茄。 | (a & b) 輸出結(jié)果 12 ,二進(jìn)制解釋: 0000 1100 |
| | 按位‘或’運(yùn)算符:參與運(yùn)算的兩個(gè)值但指,兩個(gè)相應(yīng)位都為0寡痰,則該位結(jié)果為0 抗楔,否則為1。 | (a |b)輸出結(jié)果為61拦坠,二進(jìn)制解釋:0011 1101 |
^ | 按位異或運(yùn)算符:當(dāng)兩對應(yīng)的二進(jìn)位相異時(shí)连躏,結(jié)果為1,否則為0 | (a ^ b)輸出結(jié)果為49贞滨,二進(jìn)制解釋:0011 0001 |
~ | 按位取反:對數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)? 入热。~x 類似于 -x-1 | (~a ) 輸出結(jié)果 -61 ,二進(jìn)制解釋: 1100 0011晓铆,在一個(gè)有符號二進(jìn)制數(shù)的補(bǔ)碼形式勺良。 |
<< | 左移動運(yùn)算符:整體向左移動n位。結(jié)果計(jì)算:a * 2 **n | a << 2 輸出結(jié)果 240 骄噪,二進(jìn)制解釋: 1111 0000 |
>> | 右移動運(yùn)算符:整體向右移動n位尚困。結(jié)果計(jì)算:a/2 **n。 | a >> 2 輸出結(jié)果 15 链蕊,二進(jìn)制解釋: 0000 1111 |
練習(xí)
以下練習(xí)難度較高
-
使用位運(yùn)算事甜,獲取到十六進(jìn)制顏色
0xF0384E
的RGB值,以十進(jìn)制形式打印輸出示弓。color = 0xF0384E
red = color >> 16
green = (color & 0x00FF00) >> 8
blue = color & 0x0000FF