Python 按位运算符
Python 按位运算符(Python Bitwise Operators)通常用于对整数类型对象执行按位运算。但是,它不是将对象视为一个整体,而是将其视为一串位。对字符串中的每个位执行不同的操作。
Python 有六个按位运算符 - &、|、^、~、<< 和 >>。所有这些运算符(除了 ~)本质上都是二进制的,因为它们对两个操作数进行操作。每个操作数都是一个二进制数字 (bit) 1 或 0。
以下是 Python 中的按位运算符 -
- 按位 AND 运算符
- 按位 OR 运算符
- 按位 XOR 运算符
- 按位 NOT 运算符
- 按位 左移 运算符
- 按位 右移 运算符
Python 按位 AND 运算符 (&)
按位 AND 运算符有点类似于逻辑 AND 运算符。仅当两个位操作数均为 1 (即 True) 时,它才返回 True 。所有组合均为 −
1 & 0 is 0
0 & 1 is 0
1 & 1 is 1
当你使用整数作为操作数时,两者都被转换为等效的二进制,&操作在每个数字的相应位上完成,从最低有效位开始,一直到最高有效位。
Python 按位 AND 运算符示例
让我们取两个整数 60 和 13,并将它们分别分配给变量 a 和 b。
它将产生以下输出 -
要了解 Python 如何执行该操作,请获取每个变量的二进制等效项。
它将产生以下输出 -
b: 0b1101
为方便起见,请为每个数字使用标准的 8 位格式,以便00111100“a”,00001101“b”。让我们对这两个数字的每个对应位手动执行和操作。
&
0000 1101
-------------
0000 1100
将生成的 binary 转换回整数。你会得到 12,这是之前获得的结果。
Python 按位 OR 运算符 (|)
“|” 符号(称为竖线)是按位 OR 运算符。如果任何位操作数为 1,则结果为 1,否则为 0。
0 | 1 is 1
1 | 0 is 1
1 | 1 is 1
Python 按位 OR 运算符示例
取 a=60、b=13 的相同值。“|” 操作的结果为 61。获取它们的二进制等效项。
它将产生以下输出 -
a: 0b111100
b: 0b1101
要手动执行 “|” 操作,请使用 8 位格式。
|
0000 1101
-------------
0011 1101
将二进制数转换回整数以计算结果 -
Python 按位 XOR 运算符 (^)
术语 XOR 代表排他 OR。这意味着如果只有一个位是 1,则对两个位进行 OR 运算的结果将为 1。
Python 按位 XOR 运算符示例
让我们对 a=60 和 b=13 进行 XOR 运算。
它将产生以下输出 -
现在,我们手动执行按位 XOR。
^
0000 1101
-------------
0011 0001
int() 函数显示 00110001 为 49。
Python 按位 NOT 运算符 (~)
此运算符是逻辑 NOT 运算符的二进制等效项。它翻转每个位,以便 1 替换为 0,将 0 替换为 1,并返回原始数字的补码。Python 使用 2 的补码方法。对于正整数,只需反转位即可获得。对于负数 -x,使用 (x-1) 的位模式写入,所有位都补码(从 1 切换到 0 或从 0 切换到 1)。因此:(对于 8 位表示)
Python 按位 NOT 运算符示例
对于 a=60,其补数为 −
它将产生以下输出 -
Python 按位左移运算符 (<<)
左移运算符将最高有效位右移 “<<”符号。因此,“x << 2” 会导致 的二进制表示的两位右。
Python 按位左移运算符示例
让我们在 60 上执行左移。
它将产生以下输出 -
这是如何发生的?让我们使用等效的二进制 60,并执行 2 的左移。
将 binary 转换为 integer。是 240 人。
Python 按位右移运算符 (>>)
右移运算符将最低有效位向左移动 “>>” 符号右侧的数字。因此,“x >> 2” 会导致 的二进制表示为 left 的两位。
Python 按位右移运算符示例
让我们在 60 上执行右移。
它将产生以下输出 -
60 上的手动右移操作如下所示 -
使用 int() 函数将上述二进制数转换为整数。现在是 15 岁。