对于C和Python,按位运算符不是不同吗?

2024-09-29 03:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

按位not运算符:返回对Python中数字的补充

在C语言中,bitwise not operator 只是翻转位。因此,这两种语言的表现不同

问题1:Python中是否有等效的位翻转操作

问题2:数字的补数通常是翻转运算。但是,在Python的链接中,该示例包含相反的符号,后跟添加1 ie的结果。~x = ~(binary_x) = -(binary_x+1)

根据我的理解,这个操作不等于C中的补码。相反,Python中的not看起来类似于2的补码

那么这个操作是什么?在Python中按位NOT~的正确方法是什么


Tags: 方法语言示例链接符号not运算符数字
1条回答
网友
1楼 · 发布于 2024-09-29 03:25:49

使用struct模块,您可以看到~确实有效地翻转位,当固定数量的位使该解释有意义时

Python中的int使用任意精度,因此所有值都使用值的无符号大小所需的最小数量的30位块加上显式符号位来存储

下面是一个生成1和~1的固定精度表示的示例:

>>> struct.pack("!l", 1)
b'\x00\x00\x00\x01'
>>> struct.pack("!l", ~1)
b'\xff\xff\xff\xfe'

如您所见,~11111 1111 1111 1111 1111 1111 1111 1110

相关问题 更多 >