当前位置: 首页 > 编程语言 > 其它 > 正文

python的位运算

时间:2017-02-19

按位运算就把数字转换为机器语言——二进制的数字来运算的一种运算形式,在计算机系统中,数值一律用补码来表示(存储)。 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) ;

来源:http://blog.csdn.net/liyanwei8/article/details/55800321