我是python的新手,我正在使用python 2.7 当我在python shell上键入它时:
print 01
print 010
print 0100
print 01000
它给出了这个结果
1
8
64
512
我试图理解为什么会这样做但不幸的是我没有明白这一点。
答案 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
始终为decimal
值1
,因为所有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
,0
,0b
)前导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.因此,您可以看到,使用较少的符号(较低的基数),您可以表示的值会在给定固定位数的情况下减少。