我是 python 新手,当我在 python shell 上输入这个时,我使用的是 python 2.7:
print 01
print 010
print 0100
print 01000
它给出了这个结果
1
8
64
512
我试图理解它为什么会这样,但不幸的是我没有明白这一点。
我是 python 新手,当我在 python shell 上输入这个时,我使用的是 python 2.7:
print 01
print 010
print 0100
print 01000
它给出了这个结果
1
8
64
512
我试图理解它为什么会这样,但不幸的是我没有明白这一点。
如果数字以 开头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
等等。八进制只使用从 0 到 7 的数字。
希望这有帮助!
0
Python 解释一个以as octal
which is开头的数字base 8
。您可以使用二进制字符串10
作为baseb^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
对于从右到左阅读的所有人来说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
其中n
的位数。给定一个 3 位数字,最大十进制值为(10^3)-1 = 999
,八进制(8^3)-1 = 511 (decimal)
表示777
以 8 为基数,二进制(2^3)-1 = 7 (decimal)
表示111
以 2 为基数。因此,您可以看到符号越少(基数越低),在给定固定数字的情况下,您可以表示的值会减少位数。