在 Python 中,有不同类型的运算符可以帮助我们执行从 算术comparison 以及从 identitymembership 操作的不同操作。

这些运算符使用特殊符号和保留关键字对值和变量执行特定操作。

对值进行操作的运算符称为操作数

与这些运算符一样,Python 有一个内置的运算符,可以对 bits 进行运算。

简介

与 Python 中的所有运算符一样,有一个 Bitwise Operator 用于对整数值执行按位计算

就像它的名字所描述的那样,这个运算符将整数值转换为二进制格式然后然后对其执行逐位运算并再次以十进制格式返回结果。

为什么要转换成二进制格式?

有两种类型的数字系统:

  • 德纳留斯 (0 - 9)

  • 二进制(0和1)

好吧,我们人类在日常生活中理解并使用具有十位数字(0-9)的数字系统。但是计算机呢? 因此计算机通过操作 1 和 0 来工作,这些是二进制数字, 或简称为 bits

现在您已经知道要对整数值执行按位计算,计算机将转换为计算机可以理解的 1 和 0。

按位运算有 6 种类型:

操作员

描述

句法

**&**

按位与

**x & y**

**|**

按位或

**x | y**

**~**

按位非

**~x**

**^**

按位异或

**x ^ y**

**>>**

按位右移

**x>>**

**<<**

按位左移

**x<<**

让我们一一讨论。

注意:按位运算符仅适用于int(整数)类型,否则将引发TypeError

按位与运算符

按位 AND 运算符由 "&"(和号)符号表示。

当我们对值执行按位与运算时,如果两个位都为 1,则返回 1,否则返回 0

x = 5  # 0101 (binary)
y = 6  # 0110 (binary)

output = x & y
print(output)

>>> 4

输出将是 4。

按位与.png

在那里你可以看到它当从右数第二个索引处的二进制数字都为 1 时返回 1,当其中一个位为 0 而另一个位为 1 时返回 0

如果我们在算术上看到它,那么等式是

按位与等式.png

这里xy是转换成二进制格式的整数值,index是二进制数字的索引号。

如果我们尝试使用这个等式获得结果,那么过程将是

按位与方程示例.png

现在你对幕后发生的事情有了一个很好的了解。

按位或运算符

按位或运算符由 "|"(竖线)符号表示。

按位或运算符 如果任何位为 1,则返回 1 否则 它将返回 0。

x = 5  # 0101 (binary)
y = 6  # 0110 (binary)

output = x | y
print(output)

>>> 7

输出将是 7

按位或.png

在这里,当任何一个位为 1 时返回 1,否则返回 0

算术方程

按位或方程.png

对二进制数字执行等式

按位或方程示例.png

在这里,我们执行了一个简单的算术运算。

按位非运算符

按位 NOT 运算符由 "~" (反转)符号表示。

它使用一元 ( ~ ) 反转运算符并反转所有位。

执行此等式后返回结果

Bitwise NOT equation.png

x = 5  # 0101 (binary)

output = ~x
print(output)

>>> -6

正如您已经看到上面的等式一样,让我们看看它是如何在幕后发生的

按位非.png

现在,如果您想知道0101+1u003d0110为什么不是0101+1u003d0102?

如果我们在二进制中添加1+1,那么我们将得到10

二进制加法只有三个规则:

  • 0 + 0 u003d 0
  • 0 + 1 u003d 1 或 1 + 0 u003d 1
  • 1 + 1 u003d 10来源

如果我们在算术上看到它,那么过程将与上面相同。

按位非等式示例.png

按位异或运算符

按位 XOR 运算符由 "^"(抑扬符)符号表示。

按位 XOR 运算符 如果其中一个位为 0 且另一个位为 1,则返回 1 否则如果两个位相同,即两个位均为 0 或 1,则返回 0。

x = 5  # 0101 (binary)
y = 6  # 0110 (binary)

output = x ^ y
print(output)

>>> 3

输出将是 3

按位异或.png

算术方程将是

按位异或方程.png

该等式看起来很简单,但要记住的一件事是( % )符号不用于计算值的百分比,它是 返回余数股息和除数。

Python 有一个内置的模运算符

%(模)运算符从第一个参数除以第二个参数产生余数。数字参数首先转换为通用类型。来源

让我们看看如何做到这一点以获得结果

按位异或方程示例.png

在这里你可以看到当我们执行 1 % 2 (1 modulo 2) 时我们得到 1。当我们执行简单除法时,我们得到 0.5 作为商,余数为 0 但是当我们在 Python 中执行 1 % 2 时,我们将在控制台中得到 1

在您的 Python 程序中尝试一下。

按位左移运算符

按位左移运算符由 "<<" 符号表示。

如果你仔细看,你会发现它好像在向左移动。嗯,它和它看起来一样。

按位左移运算符将左操作数向左移动,在右操作数中指定的次数

用简单的术语来说,指定数量的 0 附加在二进制数的末尾。

x = 5  # 0101 (binary)

output = x<<2
print(output)

>>> 20

输出将是 20。

按位左移.png

在上面的示例中,通过将二进制数字向左移动,在末尾附加了 00 (2) 个零。

它也有一个方程,我们可以通过算术得到结果

按位左移方程.png

这里x是二进制数字,n是要移位的次数。

在算术上,二进制数字乘以 2 的幂n

如果我们试图通过算术获得结果,那么这个过程将是

位左移方程例子.png

如果您无法理解二进制数字的乘法,请参阅 google 上的文章。

按位右移运算符

按位右移运算符由 ">>" 符号表示。

如果你仔细看,你会发现它好像在指示右移。嗯,它和它看起来一样。

按位右移运算符将左操作数右移,右操作数中指定的次数

在简单的术语中,右侧位被删除。

x = 5  # 0101 (binary)

output = x>>2
print(output)

>>> 1

输出将是 1

按位右移.png

好吧,如果我们看到方程,它与左移运算符方程有点不同

按位右移方程.png

在左移运算符方程中,我们将二进制数字从 2 乘以n的幂,我们在这里做同样的事情,但不是乘,而是除。

让我们看看我们如何在算术上执行它

按位右移方程示例.png

如果您不知道如何划分二进制数字,请参阅 google 上的文章。

结论

您已经了解了按位运算符可以做什么以及它们如何在幕后运行方程式。

理解位运算可以让你解锁在 Python 代码中使用不同的位运算符来操作二进制数字的知识。

继续并开始在 Python 程序中处理二进制数,并充分利用您的知识。


这就是本文的全部内容

继续编码✌✌

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐