二进制数?

时间:2010-12-19 22:45:49

标签: python binary

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

  
    
      

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

    
  

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

8 个答案:

答案 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