G-Fact 19(布尔值上的逻辑非和按位非运算符)


布尔运算符是计算机科学中逻辑的基础。它们用于对二进制数据执行逻辑和按位运算。在 Python 中,逻辑非运算符用于否定布尔表达式,而按位非运算符用于反转数字中的位。在这篇博文中,我们将探讨 Python 中布尔值上的逻辑非和按位非运算符。

操作数和真值表

Python 中的布尔运算符有“and”、“or”和“not”。如果两个操作数都为 True,则“and”运算符的结果为 True,否则为 False。“or”运算符如果至少一个操作数为 True,则结果为 True,否则为 False。与操作数的真值相反,“not”运算符产生相反的结果。

以下是“and”和“or”运算符的真值表:

操作数 1

操作数 2

"and"

"or"

True

True

True

True

True

False

False

True

False

True

False

True

False

False

False

False

对于“not”运算符,它只有一个操作数,其真值表如下:

操作数

"not"

True

False

False

True

算法

逻辑非运算符返回布尔表达式的相反值。如果表达式为真,则返回假。如果表达式为假,则结果为真。逻辑非运算符的算法如下:

  • 评估布尔表达式。

  • 如果表达式为真,则返回假。

  • 如果表达式为假,则返回真。

按位非运算符返回数字的补码。它反转数字中的所有位,因此每个 0 变成 1,每个 1 变成 0。按位非运算符的算法如下:

  • 将数字转换为二进制。

  • 反转所有位。

  • 将生成的二进制数转换回十进制。

示例 1:逻辑非运算符

x = True
y = not x
print(y)

输出

False

示例 2:按位非运算符

x = 5  # Decimal 5 is binary 101
y = ~x  # Invert all bits, result is binary -110 (2's complement of 101)
print(y)

输出

-6 

在第一个示例中,我们使用逻辑非运算符来否定 x 的布尔值。结果为假,因为 x 为真。在第二个示例中,我们使用按位非运算符来反转数字 5 中的位。结果为 -6,因为反转的二进制值 (-110) 被解释为 2 的补码数。

示例 3:逻辑非和按位非运算符

x = 7  # Decimal 7 is binary 111
y = not x  # Invert boolean value of x, result is false because x is not zero
z = ~x  # Invert all bits in x, result is binary -1000 (2's complement of 111)
w = not(z > 0)  # Is z greater than 0? Invert boolean result, result is true because z is negative
print(y, z, w) 

输出

False -8 True

在这个例子中,我们首先将十进制值 7 赋给变量 x。然后我们使用逻辑非运算符来反转 x 的布尔值。结果为假,因为 x 不为零。接下来,我们使用按位非运算符来反转 x 中的所有位。结果为二进制 -1000(111 的 2 的补码)。最后,我们使用逻辑非运算符来反转比较 z > 0 的布尔结果。由于 z 为负数,因此结果为真。

应用

逻辑非和按位非运算符可用于各种应用。以下是一些示例:

布尔代数 - 逻辑非运算符用于布尔代数中反转语句的真值。这在逻辑推理和数学证明中很有用。

数据操作 - 按位非运算符可用于翻转二进制数中的位。这在数据操作和编码中很有用。

安全 - 按位非运算符可用于密码学中从密码生成密钥。通过反转密码中的位,生成的密钥更难以猜测。

错误检查 - 按位非运算符可用于错误检查算法,例如网络协议中使用的算法。通过反转消息中的所有位,可以检测和纠正错误。

结论

逻辑非和按位非运算符是 Python 编程中的重要工具。它们允许我们反转布尔表达式和翻转二进制数中的位。这些运算符可用于各种应用,从布尔代数到密码学。通过了解这些运算符的工作原理,我们可以编写更高效、更安全的代码。

更新于: 2023年8月22日

144 次查看

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告