Python3二分之一等于负零二进制十一?

2024-04-26 07:01:58 发布

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

在python3中运行以下内容

>>> print(2, bin(2), ~2, bin(~2))
> 2 0b10 -3 -0b11

我认为~2应该是0b01或{}。在

为什么-0b11?在


Tags: binpython3print
2条回答
 2  = 00000010
~2  = 11111101

二的补码中11111101的值是多少?在

要回答这个问题,请遵循以下简单算法:

  • 翻转所有位
  • 结果加1
  • 根据MSB确定符号

^{pr2}$

注意,最高有效位是“1”,因此符号为负数。在

第一眼~2:

 2 = 0b0000...10 (n leading 0s)
~2 = 0b1111...01 (n leading 1s)

然后分析-0b11

大多数计算机数字表示都使用二的补码表示法,其中:

^{pr2}$

所以-0b11实际上是:

  - 0b11
= 0 - 0b11
= 0b0000...00 + 0b1111...00 + 1
= 0b1111...01

相关问题 更多 >