python入門 位運算

2021-10-12 07:25:11 字數 1941 閱讀 6398

二進位制有三種表示形式,分別是原碼、反碼和補碼,計算機內部使用補碼來表示。

原碼:就是二進位制表示(注意:第一位是符號位)

-3:10000011

3:00000011

反碼:正數的反碼就是原碼,負數的反碼是符號位不變,其餘位取反

-3:11111100

3:00000011 

補碼:正數的補碼就是原碼,負數的補碼是反碼+1

-3:11111101

3:00000011 

~num

對num做按位非操作,就是對num的補碼中的每一位取反,包括符號位

例如:-5:11111011;~-5:00000100(4)

5:00000101;~5:11111010(-6)

總結來說:正數按位非操作之後對應的數為原正數對應的負數-1;負數按位非操作之後對應的數為原負數對應的正數-1

只有兩個對應為都為1時才為1

1 & 1 = 1

1 & 0 = 0

0 & 0 = 0

0 & 1 = 0

兩個對應位中有乙個為1就為1

1 | 1 = 1

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0

兩個對應位不同時為1,相同時為0

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0 

num《例:

11:00001011

11<<3:01011000(11*2^3 = 88)

num>>i:將num的二進位制表示向右移動i位所得的數值

例:11:00001011

11>>3:00000001 (1)

n<<1:計算n*2

n>>1:計算n/2(負奇數的運算不可用)

n>m:計算n/(2^m)

a ^= b

b ^= a

a ^= b 

5:00000101;-5:11111011;5 & -5:00000001(1)

14:00001110;-14:11110010:14 & -14:00000010(2)

乙個數的二進位制表示可以看作是乙個集合,1表示在集合中,0表示不在集合中。例如,可以表示成 0100011010

元素與集合的操作:(a為集合的二進位制表示)

把 i 插入到集合中:a|(1《把 i 從集合中刪除:a&~(1《判斷 i 是否在集合中:a&(1《集合之間的操作:(a,b分別為兩個集合的二進位制表示)

集合的補集:~a

集合的交集:a & b

集合的並集:a | b

集合的差:a & (~b)

python中對負數(十進位制數)進行bin操作,輸出的是這個數的原碼二進位制數表示再加乙個負號(很坑是不是),如果想要得到補碼表示,還需要將這個負數與0xffffffff進行按位與操作,再將得到的結果交給bin進行處理,最終得到的數才是負數的補碼表示。

python 位運算 效能 Python位運算妙用

位運算就是直接對整數在記憶體中的二進位制位進行操作,位運算的效能較高,常用的位運算包含按位與 按位或 按位非 按位異或 有符號左移 如下是一些妙用的示例 判斷奇偶 常用思路通過除以2,判斷餘數是否為0 def isodd x return true if x 2 0 else false 如何使用位...

Python入門 位運算 DAY 001

二進位制有三種不同的表示形式 原碼 反碼和補碼,計算機內部使用補碼來表示。原碼 就是其二進位制表示 注意,有一位符號位 反碼 正數的反碼就是原碼,負數的反碼是符號位不變,其餘位取反 對應正數按位取反 補碼 正數的補碼就是原碼,負數的補碼是反碼 1。舉例 a 60 60 0011 1100 b 13 ...

C語言入門 位運算

在進行如何位運算之前,首先應將任何表示式的結果轉換成二進位制,計算完之後再轉換成原來的進製即可得到運算結果,不能對浮點數進製運算。按位與 兩個位都為1,結果才為1。作用 清零 要將某一位清零,可將相應為設定為0.其他位為1,再使用按位與運算。取指定位 想取某一位,可將相應的位設定為1,其他位為0,再...