Как python интерпретирует числа с ведущими нулями
Я новичок в python, я использую python 2.7
когда я набрал это в оболочке python:
print 01
print 010
print 0100
print 01000
Он дает этот результат
1
8
64
512
Я попытался понять, почему он это дал, но, к сожалению, я не понял.
Ответы
Ответ 1
Если число начинается с 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.
Надеюсь, это помогло!
Ответ 2
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
для всех 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. Таким образом, вы можете видеть, что с меньшим количеством символов (нижняя база) значение, которое вы можете представлять, уменьшается с учетом фиксированного количества цифр.