我正在使用python shell来弄清楚print命令在python中是如何工作的 当我输入
print 01
1
打印010
8
打印0100
64个
打印030
24
这里发生了什么?它只是基数2吗?为什么第二个位置的“一个”打印为8?如果它是二进制的,它不应该是2吗?
答案 0 :(得分:12)
启动一个带零的数字在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。
答案 1 :(得分:5)
这是Python中八进制数的old notation。
在Python 2.6及更高版本中,您应该使用语法0o10
表示八进制,0b10010
表示二进制数。
在旧版本的Python中,您将二进制数输入为字符串并将其解析为整数:
>>> x = int("10010", 2)
>>> print x
18
答案 2 :(得分:3)
在0
之前的整数文字将其标记为八进制。
这在Python 3中有changed,不建议从Python 2.6开始使用:改为使用0o...
。
>>> 0b1010 == 012 == 0xA == 10
True
答案 3 :(得分:1)
如果在数字的左侧追加0,则将其解释为八进制数。因此十进制中的10等于十进制中的8,而八进制中的100等于十进制中的64,依此类推。
如果要处理二进制数,则应使用逐位运算符来处理这些位。
答案 4 :(得分:0)
与大多数编程语言一样,Python遵循C开头的数字,从0开始是八进制(基数为8)。
答案 5 :(得分:0)
它将它们解释为八进制(基数为8),而不是二进制数。
答案 6 :(得分:0)
绝对不是base2。它是八进制 - 基础8。
答案 7 :(得分:0)
以0开头的数字被解释为八进制。 对于二进制数,“起始序列”为0b。
>>> print 0b10
2
>>> print 010
8
>>> print 0x10
16