在上一节的合集中,我们了解了Python运算符中的比较运算符和逻辑运算符的相关知识,本节我们将进一步了解一下Python运算符中的位运算符的相关知识。

    位运算符是把数字看作二进制数来进行计算的,因此,需要先将要执行运算的数据转换为二进制,然后才能执行运算。Python中位运算符有与(&)、或(|)、异或(^)、取反(~)、左移位(<<)、右移位(>>)。

注:整形数据在内存中以二进制的形式表示,如 7的32位二进制表示为:00000000 00000000 00000000 00000111,其中,左边最高位是符号位,最高位为0表示正整数,若为1则表示负数,负数采用的是补码表示,如 -7的32位二进制形式为:11111111 1111111 11111111 11111001

1.与运算

与 运算的运算符为 & ,运算法则为:两个操作数据的二进制表示,只有对应数位都是1时,结果数才为1,否则为0.如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

     0000 0000 0000 1100

  & 0000 0000 0000 1000

————————————

    0000 0000 0000 1000

2.或运算

或运算的运算符为 | ,运算符的运算法则为:两个操作数据的二进制表示,只有对应数位都是0,结果才是0,否则为1.如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

  0000 0000 0000 0100

| 0000 0000 0000 1000

——————————

  0000 0000 0000 1100

3.异或运算

异或运算的运算符为 ^ 运算符的运算法则为:两个操作数据的二进制表示相同(同时为1或者0)时,结果为0,否则为1。若两个操作数的精度不同,则结果的精度与精度高的操作数相同。

   0000 0000 0001 1111

^ 0000 0000 0001 0110

_____________________

   0000 0000 0000 1001

4.取反运算

取反运算也称为非运算,运算符为~,取反运算就是将操作数中对应的二进制数1修改为0,0修改为1.

 ~ 0000 0000 0111 1011

———————————

   1111 1111 1000 0100

5.左移运算

左移位运算符 << 是将一个二进制操作数向左移动制定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充,左移位运算相关与乘以2的n次幂。

  例如:int类型的数据48,对应的二进制数:0011 0000,将其左移一位,根据左移运算的运算规则可以得出(0011 0000 <<1)=0110 0000,所以转换为十进制就是96,将其左移两位,根据运算规则可以得出(0011 0000<<2)=1100 0000 ,转换为十进制就是192.

6.右移运算

右移位运算符>>是将一个二进制操作数向右移动指定的位数,右边(地位段)溢出的位被丢弃,左边(高为段)的空位,如果最高位为0(正数)左侧填入0,如果最高位为1,左侧填入1.右移位相当于除以2的n次幂。