按位運算就把數(shù)字轉(zhuǎn)換為機器語言——二進制的數(shù)字來運算的一種運算形式,在計算機系統(tǒng)中,數(shù)值一律用補碼來表示(存儲)。 Python中的按位運算符有:按位與(&),按位或(|),按位異或(^),按位翻轉(zhuǎn)(~)左移運算符(<<),右移運算符(>>)
按位與(&):有0為0,同1為1
按位或(|):有1為1,同0為0;
按位異或(^):相同為0,不同位1;
按位翻轉(zhuǎn)(~):遇1為0,遇0為1
左移運算符(<<):將數(shù)字對應(yīng)的二進制數(shù)num左移n位,相當(dāng)于num*(2**n)
右移運算符(>>):將數(shù)字對應(yīng)的二進制數(shù)num右移n位,相當(dāng)于num/(2**n)
常用的地方:
1、 用于整數(shù)的奇偶性判斷
一個整數(shù)a, a & 1 這個表達式可以用來判斷a的奇偶性。
二進制的末位為0表示偶數(shù),最末位為1表示奇數(shù)。a & 1 == 0,偶數(shù),反之,奇數(shù) 。
2、 判斷n是否是2的正整數(shù)冪
(!(n&(n-1)) )&& n,TURE為真,反之為假。
3、 統(tǒng)計n中1的個數(shù)
4、對于正整數(shù)的模運算(注意,負(fù)數(shù)不能這么算)
5、計算掩碼
如一個截取低6位的掩碼:0×3F用位運算這么表示:(1<< 6) - 1這樣也非常好讀取掩碼,因為掩碼的位數(shù)直接體現(xiàn)在表達式里。按位或運算很簡單,只要a和b中相應(yīng)位出現(xiàn)1,那么a|b的結(jié)果相應(yīng)位
也為1。就不多說了。
6、子集
枚舉出一個集合的子集。設(shè)原集合為mask,則下面的代碼就可以列出它的所有子集:
for (i = mask ; i ; i = (i - 1) & mask) ;
新聞熱點
疑難解答