提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
位运算
什么是位
在计算机中无论是整数、浮点数还是字符,都是以位(bit)的形式存储的,一个bit的取值只有 “1”和“0” 两个值,8位的bit构成一个字节 “byte”。对于一些图像、驱动以及硬件控制等操作,都需要进行位运算。
位运算符
Python的位运算符包括:
按位与运算&:只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。它的真值表为:
例如在32位系统中,9&5的位运算可以表示成:
&运算符会对参与运算的两个整数的所有二进制位进行&运算,9&5的结果为 1。按位与运算通常用来对某些位清 0,或者保留某些位。例如要把 n 的高 16 位清 0 ,保留低 16 位,可以进行n & 0XFFFF运算(0XFFFF 在内存中的存储形式为 0000 0000 – 0000 0000 – 1111 1111 – 1111 1111)。
按位或运算|:两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。它的真值表为:
例如,9 | 5可以转换成如下的运算:
按位或运算可以用来将某些位置 1,或者保留某些位。例如要把 n 的高 16 位置 1,保留低 16 位,可以进行n | 0XFFFF0000运算(0XFFFF0000 在内存中的存储形式为 1111 1111 – 1111 1111 – 0000 0000 – 0000 0000)。
按位异或运算^:参与运算的两个二进制位不同时,结果为 1,相同时结果为 0。
它的真值表为:
按位异或运算可以用来将某些二进制位反转。例如要把 n 的高 16 位反转,保留低 16 位,可以进行n ^ 0XFFFF0000运算(0XFFFF0000 在内存中的存储形式为 1111 1111 – 1111 1111 – 0000 0000 – 0000 0000)。