按位运算就把数字转换为机器语言——二进制的数字来运算的一种运算形式,在计算机系统中,数值一律用补码来表示(存储)。 Python中的按位运算符有:按位与(&),按位或(|),按位异或(^),按位翻转(~)左移运算符(<<),右移运算符(>>)
按位与(&):有0为0,同1为1
按位或(|):有1为1,同0为0;
按位异或(^):相同为0,不同位1;
按位翻转(~):遇1为0,遇0为1
左移运算符(<<):将数字对应的二进制数num左移n位,相当于num*(2**n)
右移运算符(>>):将数字对应的二进制数num右移n位,相当于num/(2**n)
常用的地方:
1、 用于整数的奇偶性判断
一个整数a, a & 1 这个表达式可以用来判断a的奇偶性。
二进制的末位为0表示偶数,最末位为1表示奇数。a & 1 == 0,偶数,反之,奇数 。
2、 判断n是否是2的正整数冪
(!(n&(n-1)) )&& n,TURE为真,反之为假。
3、 统计n中1的个数
4、对于正整数的模运算(注意,负数不能这么算)
5、计算掩码
如一个截取低6位的掩码:0×3F用位运算这么表示:(1<< 6) - 1这样也非常好读取掩码,因为掩码的位数直接体现在表达式里。按位或运算很简单,只要a和b中相应位出现1,那么a|b的结果相应位
也为1。就不多说了。
6、子集
枚举出一个集合的子集。设原集合为mask,则下面的代码就可以列出它的所有子集:
for (i = mask ; i ; i = (i - 1) & mask) ;
新闻热点
疑难解答