python如何解释前导零的数字

时间:2012-11-17 14:07:12

标签: python

我是python的新手,我正在使用python 2.7 当我在python shell上键入它时:

print 01
print 010
print 0100
print 01000

它给出了这个结果

1
8
64
512

我试图理解为什么会这样做但不幸的是我没有明白这一点。

2 个答案:

答案 0 :(得分:22)

如果一个数字以0开头,则将其解释为八进制或基数为8.只需执行:

print 1
print 10
print 100
print 1000

你的问题将得到解决。

有关八进制的更多信息:http://en.wikipedia.org/wiki/Octal

这是一种更容易理解八进制的方法:

  

八进制1是十进制(正常数字)1

     

八进制2:十进制2

     

...

     

八进制7:十进制7

     

八进制10:十进制8

     

八进制11:十进制9

     

八进制12:十进制10

     

...

     

八进制17:十进制15

     

八进制20:十进制16

等等。 Octal只使用0到7之间的数字。

希望这有帮助!

答案 1 :(得分:10)

Python将以0开头的数字解释为octal base 8。您可以使用二进制字符串10作为b^1 === b来计算基数b是基础。

# print the decimal value of the binary number 10
>>> print 0b10
2
# print the decimal value of the octal number 10    
>>> print 010
8
# print the decimal value of the hexadecimal number 10
>>> print 0x10
16

在任何基础中,符号1始终为decimal1,因为所有b^0 === 1的{​​{1}}为向左读取数字的索引从b开始。

0

解释基数(# print the decimal value of the binary number 1 >>> print 0b001 1 # print the decimal value of the octal number 1 >>> print 0001 1 # print the decimal value of the hexadecimal number 1 >>> print 0x001 1 00b)前导0x并不重要。

基数所需的符号数为0,其中最大符号等于b

b-1

可以用数字表示的最大值是 Base (b) Number of Symbols (b) Symbols (0 : b-1) Binary 2 2 0,1 Octal 8 8 0,1,2,3,4,5,7,6,7 Decimal 10 10 0,1,2,3,4,5,7,6,7,8,9 ,其中(b^n)-1是位数。给定一个3位数字,最大十进制值为n,八进制为(10^3)-1 = 999,基数为8 (8^3)-1 = 511 (decimal),基数为777,基数为(2^3)-1 = 7 (decimal) 2.因此,您可以看到,使用较少的符号(较低的基数),您可以表示的值会在给定固定位数的情况下减少。