二进制数?

3 投票
8 回答
6482 浏览
提问于 2025-04-16 08:45

我正在使用Python的命令行来了解打印命令是怎么工作的。
当我输入以下内容时:

print 01
1
print 010
8
print 0100
64
print 030
24

这里发生了什么呢?这只是二进制吗?为什么第二个位置的“1”打印出来是8?如果是二进制的话,不应该是2吗?

8 个回答

3

在一个整数前面加上0,表示这个数是八进制的。

不过在Python 3中,这个规则有了变化,从Python 2.6开始也不推荐这样做:应该使用0o...的形式。

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

这是Python中旧的八进制数字表示法。

在Python 2.6及更新的版本中,你应该使用 0o10 来表示八进制数字,使用 0b10010 来表示二进制数字。

在旧版本的Python中,你需要把二进制数字作为字符串输入,然后再转换成整数:

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

在Python 2中,以零开头的数字会被当作八进制数,这让很多人感到困惑和意外,因为如果以0x开头,它就会被当作十六进制数。因此,在Python 3中,以0开头的数字是不合法的。如果你想表示八进制数,需要以0o开头。你还可以用0b开头来表示二进制数。

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

在Python 2.6和Python 2.7中,0x、0o和0b也可以使用。

撰写回答