二進位制有三種表示形式,分別是原碼、反碼和補碼,計算機內部使用補碼來表示。
原碼:就是二進位制表示(注意:第一位是符號位)
-3:10000011反碼:正數的反碼就是原碼,負數的反碼是符號位不變,其餘位取反3:00000011
-3:11111100補碼:正數的補碼就是原碼,負數的補碼是反碼+13:00000011
-3:111111013:00000011
~num對num做按位非操作,就是對num的補碼中的每一位取反,包括符號位
例如:-5:11111011;~-5:00000100(4)
5:00000101;~5:11111010(-6)
總結來說:正數按位非操作之後對應的數為原正數對應的負數-1;負數按位非操作之後對應的數為原負數對應的正數-1
只有兩個對應為都為1時才為11 & 1 = 1
1 & 0 = 0
0 & 0 = 0
0 & 1 = 0
兩個對應位中有乙個為1就為11 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
兩個對應位不同時為1,相同時為01 ^ 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*2n>>1:計算n/2(負奇數的運算不可用)
n>m:計算n/(2^m)
a ^= bb ^= a
a ^= b
5:00000101;-5:11111011;5 & -5:00000001(1)乙個數的二進位制表示可以看作是乙個集合,1表示在集合中,0表示不在集合中。例如,可以表示成 010001101014:00001110;-14:11110010:14 & -14:00000010(2)
元素與集合的操作:(a為集合的二進位制表示)python中對負數(十進位制數)進行bin操作,輸出的是這個數的原碼二進位制數表示再加乙個負號(很坑是不是),如果想要得到補碼表示,還需要將這個負數與0xffffffff進行按位與操作,再將得到的結果交給bin進行處理,最終得到的數才是負數的補碼表示。把 i 插入到集合中:a|(1《把 i 從集合中刪除:a&~(1《判斷 i 是否在集合中:a&(1《集合之間的操作:(a,b分別為兩個集合的二進位制表示)
集合的補集:~a
集合的交集:a & b
集合的並集:a | b
集合的差:a & (~b)
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,再...