二进制数?
我正在使用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也可以使用。