分享

算法|Python位运算总结

 算法与编程之美 2020-08-08

位运算,实际就是将数字转换为二进制来进行计算,先来看看其运算规则。

位运算符号的优先级:~ ,& ,^, |

一、与运算

奇偶数的判断:整数类型(int)A

A&1==0 偶数

A&1==1 奇数

清零:与0想与

取一个数中的指定位:如10101101要取后四位,只需与00001111相与

二、或运算

常用来使一个数据的某些位变为1

例:将X=10100000的低4位变1 ,用X | 0000 1111 = 1010 1111即可得到。

三、异或运算

性质:交换律(a^b=b^a),结合律( (a^b)^c=a^(b^c) ),

对于任何数x都有x^x=0、x^0=x

自反性:a^b^b=a^0=a

可用来交换两个变量的值

>>> A=1

>>> B=2

>>> A=A^B

>>> B=B^A

>>> A=A^B

>>> print(A,B)

2 1

超星学习通里有一道题:将1-1000放到一个容量为1001的数组里,只有唯一一个元素的值重复,其他数都只出现一次。数组中的每个数都只能访问一次,且不能用辅助存储空间,请设计一个算法实现。

解法:将所有的数全部异或,即1^2^3…^1000,得到的结果就是重复数。

四、取反(按位翻转)  

方法: 将二进制数+1之后乘以-1,x的按位翻转是-(x+1)。注意,按位运算符是单目运算符。1+~4是正确的,5~3就不对了。

举例:

~7,解法:7的二进制是111, -(111+1)=-1000(二进制)=-8(十进制)。

~-3,解法:  - (-11+1)=100

五、移位运算

六、复合赋值运算符

位运算符可以与赋值运算符相结合,成为新的运算符,如下:

规则补充:

如果两个不同长度的数进行位运算,系统会将两个数的右端对齐,进行位运算。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多