- 使用位運(yùn)算判斷一個數(shù)是否是奇數(shù)
n = int(input('請輸入數(shù)字:'))
if n & 1 == 1:
print('這個數(shù)是奇數(shù)')
else:
print('這個數(shù)不是奇數(shù)')
- 表達(dá)式0x13&0x17的值是(19 )
print(bin(0x13)) # 10011
print(bin(0x17)) # 10111
010011 & 010111 = 19
- 若x=-20,y=3則x&y的結(jié)果是(0)
x =110100 , y= 000011
101100(補(bǔ)) & 000011(補(bǔ)) = 000000(補(bǔ)) = 0
- 表達(dá)式 -97 | 120 的運(yùn)算結(jié)果是(-1)
-97 = 11100001,120 = 01111000
10011111(補(bǔ)) | 01111000(補(bǔ)) = 11111111(補(bǔ)) = 10000001(原) = -1
在位運(yùn)算中附迷,操作數(shù)每右移一位诫隅,其結(jié)果相當(dāng)于(B)
A.操作數(shù)乘以2
B.操作數(shù)除以2
C.操作數(shù)除以4
D.操作數(shù)乘以4設(shè)x是一個整數(shù)(16位).若要通過x|y使x低度8位置1管闷,高8位不變拯刁,則y的二進(jìn)制數(shù)是( 0000000011111111)
- 總結(jié)常用的位運(yùn)算使用技巧(自己查自己浪腐,覺得好用記得住的)
python的位運(yùn)算符是把數(shù)字看作二進(jìn)制來進(jìn)行計算的纵揍。
位運(yùn)算符 | 用法 | 舉例 |
---|---|---|
& | 按位與:參與運(yùn)算的兩個值,如果兩個相應(yīng)位都為1,則該位的結(jié)果為1,否則為0 | 5 & 3 = 1:101 和 011 相同位僅為個位1 ,故結(jié)果為 001 |
| | 按位或:只要一個為1议街,則為1泽谨,否則為0 | 101 和 011 出現(xiàn)1的位是 1 1 1,故結(jié)果為 111 |
^ | 按位異或:兩個二進(jìn)位相異為為1(即兩個二進(jìn)位要相反)特漩,否則為0 | 101 和 011 對位相加(不進(jìn)位)是 110吧雹,故結(jié)果為 110(按位反轉(zhuǎn)僅能用在數(shù)字前面。所以寫成 3+~5 可以得到結(jié)果-3涂身,寫成3~5就出錯了) |
~ | 取反:對數(shù)據(jù)的每個二進(jìn)制位取反吮炕,即把1變0,把0變1 | 將二進(jìn)制數(shù)+1之后乘以-1访得,即~x = -(x+1)龙亲,-(101 + 1) = -110 |
<< | 左移動:運(yùn)算數(shù)的各二進(jìn)位全部向左移若干位 | 5<<2 = 20 解釋:101 向左移動2位得到 10100 陕凹,即右面多出2位用0補(bǔ) |
>> | 右移動:運(yùn)算數(shù)的各二進(jìn)位全部向右移若干位 | 5>>2 = 1 解釋:101 向右移動2位得到 1,即去掉右面的2位 |