[英]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.