Python 位运算操作符

Python 位运算操作符

Python的位运算操作符通常与整数类型对象一起使用。然而,它不是将对象作为一个整体处理,而是将其作为一串位处理。在字符串中,对每个位执行不同的操作。

Python有六个位运算操作符 - &|^~<<>>。所有这些操作符(除了~)都是二元的,即它们在两个操作数上进行运算。每个操作数都是一个二进制位(1或0)。

Python位与操作符(&

位与操作符与逻辑与操作符类似。只有当两个位操作数都为1(即True)时,它才返回真。所有的组合都是-

0 & 0 is 0
1 & 0 is 0
0 & 1 is 0
1 & 1 is 1

当您将整数用作操作数时,两个整数将被转换为等效的二进制形式,并且& 操作将在每个数的对应位上执行,从最低有效位开始,向最高有效位方向进行。

让我们分别将两个整数60和13赋值给变量a和b。

a=60
b=13
print ("a:",a, "b:",b, "a&b:",a&b)

会产生以下结果 输出

a: 60 b: 13 a&b: 12

要理解Python是如何执行这个操作的,请获取每个变量的二进制等价物。

print ("a:", bin(a))
print ("b:", bin(b))

以下是生成的输出:

输出

a: 0b111100
b: 0b1101

为了方便起见,每个数字使用标准的8位格式,所以”a”是00111100,”b”是00001101。让我们手动对这两个数字的每个对应位进行AND操作。

0011 1100
                &
            0000 1101
            -------------
            0000 1100

将结果二进制数转换回整数。你将得到12,这是之前获得的结果。

>>> int('00001100',2)
12

Python 位或运算符 (|)

符号 | (称为 管道 )是位或运算符。如果任何位操作数为1,结果为1,否则为0。

0 | 0 is 0
0 | 1 is 1
1 | 0 is 1
1 | 1 is 1

将a=60和b=13带入|操作,结果为61,求它们的二进制表示。

a=60
b=13
print ("a:",a, "b:",b, "a|b:",a|b)
print ("a:", bin(a))
print ("b:", bin(b))

它将产生以下 输出

a: 60 b: 13 a|b: 61
a: 0b111100
b: 0b1101

要手动执行|操作,请使用8位格式。

0011 1100
                    |
                0000 1101
                -------------
                0011 1101

将二进制数转换回整数以核对结果 –

>>> int('00111101',2)
61

Python 二进制 XOR 运算符 (^)

XOR 是“异或”的缩写,它意味着对两个位进行 OR 运算的结果只有在只有一个位为 1 时才会是 1。

0 ^ 0 is 0
0 ^ 1 is 1
1 ^ 0 is 1
1 ^ 1 is 0

让我们对a=60和b=13执行XOR运算。

a=60
b=13
print ("a:",a, "b:",b, "a^b:",a^b)

它将产生以下 输出

a: 60 b: 13 a^b: 49

我们现在手动执行位异或操作。

0011 1100
                ^
            0000 1101
            -------------
            0011 0001

int()函数显示00110001为49。

>>> int('00110001',2)
49

Python 二进制 NOT 运算符 (~)

此运算符是逻辑 NOT 运算符的二进制等效形式。它会翻转每个位,将 1 替换为 0,将 0 替换为 1,并返回原始数的补码。Python 使用二进制补码方法。对于正整数,补码可以通过简单地翻转位来获得。对于负数 -x,它使用 (x-1) 的位模式,并对所有位进行补码 (从 1 切换到 0 或从 0 切换到 1)。因此: (对于 8 位表示)

-1 is complement(1 - 1) = complement(0) = "11111111"
-10 is complement(10 - 1) = complement(9) = complement("00001001") = "11110110".

对于a=60,它的补数是−

a=60
print ("a:",a, "~a:", ~a)

它将产生以下 输出

a: 60 ~a: -61

Python 左移位运算符(<<

左移位运算符通过右侧的<<符号将最高有效位向右移动了指定的位数。因此,x << 2会将二进制表示的x向右移动两位。 让我们对60进行左移位运算。

a=60
print ("a:",a, "a<<2:", a<<2)

它将产生以下 输出

a: 60 a<<2: 240

这个是如何发生的?让我们使用60的二进制等价物,并将其左移2位。

0011 1100
             <<
                 2
            -------------
            1111 0000

将二进制转换为整数。它为240。

>>> int('11110000',2)
240

Python 右移运算符 (>>)

右移运算符将最低有效位向左移动,移动的位数由 >> 符号右侧的数字指定。因此,x >> 2 将二进制表示的 x 向左移动两位。让我们对 60 进行右移运算。

a=60
print ("a:",a, "a>>2:", a>>2)

它将产生以下 输出

a: 60 a>>2: 15

手动右移60的操作如下所示:-

0011 1100
         >>
             2
         -------------
         0000 1111

使用int()函数将以上二进制数字转换为整数。它是15。

>>> int('00001111',2)
15

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程