繁体   English   中英

二进制数?

[英]binary numbers?

我正在使用python shell来弄清楚print命令在python中是如何工作的。
当我输入

打印01
1
打印010
8
打印0100
64
打印030
24

这里发生了什么? 它只是基数2吗? 为什么第二个位置的“一个”打印为8? 如果它是二进制的,它不应该是2吗?

启动一个带零的数字在Python 2中将其标记为八进制。这被认为是令人困惑,令人惊讶且不一致,因为从0x开始将其标记为十六进制。 因此,在Python 3中,从0开始无效,并且从0开始获得八进制。 您也可以从0b开始将其标记为二进制。

>>> 10
10
>>> 0x10
16
>>> 0o10
8
>>> 0b10
2
>>> 010
  File "<stdin>", line 1
    010
      ^
SyntaxError: invalid token

0x,0o和0b也适用于Python 2.6和Python 2.7。

这是Python中八进制数字的旧符号

在Python 2.6及更高版本中,您应该使用语法0o10表示八进制,使用0b10010表示二进制数。

在旧版本的Python中,您输入二进制数字作为字符串并将它们解析为整数:

>>> x = int("10010", 2)
>>> print x
18

前面带有0的整数文字将其标记为八进制。

这在Python 3中有所改变 ,不推荐从Python 2.6开始:使用0o...代替。

>>> 0b1010 == 012 == 0xA == 10
True

当您在数字的左侧追加0时,它将被解释为八进制数。 因此十进制中的10等于十进制中的8,而八进制中的100等于十进制中的64,依此类推。

如果要处理二进制数,则应使用逐位运算符来处理这些位。

与大多数编程语言一样,Python遵循C的传统,从0开始是八进制(基数为8)的数字。

它将它们解释为八进制(基数为8),而不是二进制数。

绝对不是base2。 它是八进制 - 基数为8。

以0开头的数字被解释为八进制。 对于二进制数,'起始序列'是0b。

>>> print 0b10
2
>>> print 010
8
>>> print 0x10
16

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM