Python 位运算符

2024 年 8 月 29 日 | 阅读 6 分钟

引言

本文讨论 Python 中的位运算符。在 Python 中,有两种运算符:逻辑运算符和位运算符。这里我们主要讨论位运算符。Python 运算符通常用于处理值和参数。本教程将探讨一种特定的 Python 运算符,称为位运算符。这些符号指示了用于数学和逻辑过程的常规符号。

按位运算符

位运算是处理单个比特(bit)的过程,比特是计算机中任何数据形式的基本组成部分。每个比特都被赋予二进制值 0 或 1。尽管机器可以操作比特,但它们通常以字节(bit 的倍数)来存储数据和执行命令。大多数脚本语言都使用 8 位、16 位或 32 位的数据组。

位运算符是表示对单个比特执行操作的字符。位运算是通过将相同大小的两个位模式的不同比特在空间上对齐来进行的。

Python 中的位运算符

位运算符在 Python 中用于对数字执行位运算。值首先被转换为二进制,然后逐位进行操作,因此称为“位运算符”。结果随后以十进制数字显示。

按位逻辑运算符:这些运算符用于逐位执行逻辑运算,就像其他逻辑运算符一样。这类似于在比特级别上使用 AND、OR 和 NOT 等逻辑运算符。除了这些基本事实之外,按位运算符和逻辑运算符是相似的。

按位移位运算符:这些运算符通过将每个比特向左或向右移位来将整数乘以或除以二。当我们需要将值乘以或除以 2 的幂时,可以使用它们。Python 的位运算符仅适用于整数。

运算符描述
& 按位与 (Binary AND)该运算符将两个操作数中都存在的比特输出。
| 按位或 (Binary OR)如果任一操作数中存在某个比特,则将其复制。
^ 按位异或 (Binary XOR)如果某个比特在一个操作数中设置但不在另一个操作数中设置,则复制它。
~ 按位非 (Binary Ones Complement)它具有“翻转”比特的功能,是单目运算符。
<< 按位左移 (Binary Left Shift)左操作数的值根据右参数指定的位数向左移动。
>> 按位右移 (Binary Right Shift)右参数提供的位数量会推进左操作数的位置。

每个二进制位运算符都有一个复合运算符,执行增强的应用。

运算符语法相当于
&=N1 &= N2N1 = N1 & N2
|=N1 |= N2N1 = N1 | N2
^=N1 ^= N2N1 = N1 ^ N2
<<=N1 <<= nN1 = N1 << n
>>=N1 >>= nN1 = N1 >> n

这些是在仍然活跃时更新左侧参数的规则。

按位与

逻辑合取是通过对给定操作数相应比特执行按位与运算 (&) 来实现的。

程序代码 1

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

x & y = 0

程序代码 2

下面我们通过将用户输入的内容放入其中来举例说明 Python 中的按位与运算。代码如下:

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

Enter the value of x: 5
Enter the value of y: 8
x & y = 0

按位或

逻辑析取通过使用按位或运算 (|) 来实现。如果相应比特对中的至少一个被打开,则结果为一。

程序代码

下面我们举例说明 Python 中的按位或运算。代码如下:

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

x | y = 19

按位非 (Bitwise NOT)

由于按位非运算符只需要一个参数,因此它是唯一的单目按位运算符。它翻转给定数字的所有比特,以对其实现逻辑否定。它表示为 ~x,其中 ~ 符号表示否定。

程序代码

下面我们举例说明 Python 中的按位非运算。代码如下:

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

~x = -44

按位异或

当其中一个比特为 1,另一个比特为 0 时,它返回 true;否则,它返回 false。

程序代码

下面我们举例说明 Python 中的按位异或运算。代码如下:

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

x ^ y = 10

按位右移

此操作的结果是,数字的各个比特向右移动,左侧的空位用 0 填充(如果数字为负,则为 1)。结果类似于将值除以 2 的幂。

程序代码

下面我们举例说明 Python 中的按位右移运算。代码如下:

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

x >> 1 = 13
y >> 1 = -13

按位左移

操作的结果是,整数左侧的各个比特在右侧的空位处用 0 填充。结果类似于将值乘以 2 的幂。

程序代码

下面我们举例说明 Python 中的按位左移运算。代码如下:

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

x << 1 = 104
y << 1 = -30

所有运算符在一个代码中

在此代码中,我们使用了所有的位运算符。代码如下:

输出

现在我们在 Python 中编译上述代码,并在成功编译后运行它。然后输出如下:

Enter the value of x: 4
Enter the value of y: 5
x & y = 4
x | y = 5
~y = -6
x ^ y = 1
x >> 1 = 0
y >> 1 = 0
x << 1 = 8
y << 1 = 10