【问题标题】:Why does ~0b1 print out -2 in Python 2.7?为什么 ~0b1 在 Python 2.7 中打印出 -2?
【发布时间】:2017-10-18 16:58:58
【问题描述】:

我(有点)熟悉一个人的补码,但我可以对 Python 2.7 进行复习。

为什么~0b1 会打印到-2

我知道一个补码将 1 转换为 0,反之亦然。我希望~0b1 打印0b00

print 是否会自动将字节文字转换为某种形式的 int

感谢任何帮助。

【问题讨论】:

  • 这不是 字节文字。这是另一种类型的int 文字,可以让您以二进制形式表达您的int。所以没有转换,因为它始终是int
  • @juanpa.arrivillaga 感谢您的评论。这有点解释。
  • 因此,换句话说,0b100000x1016 都是同一个 int 对象的文字。默认情况下,当int 打印到屏幕上时,会打印它的十进制表示。

标签: python python-2.7 binary byte ones-complement


【解决方案1】:

0b1 只是0b0000...01(整数 1)的另一种写法。使用~,您将获得按位补码1 -> 00 -> 1(包括符号位),因此您可以:

0b111....10

这是-2

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 2015-08-15
  • 2021-12-08
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多