История развития систем счисления
История систем счисления: от зарубок и египетских иероглифов до арабских цифр, двоичной системы Лейбница и современных компьютеров.
Числа придумали не математики — их создала жизнь: нужно было считать скот, отмерять зерно, делить добычу и следить за временем. Система счисления развивалась вместе с цивилизацией.
Первые шаги: непозиционные системы
Зарубки и единичное счисление
Древнейший способ счёта — зарубки на кости или дереве: одна зарубка = одна единица. Это унарная (единичная) система — непозиционная, неудобная для больших чисел.
Египетская иероглифическая система (~3000 до н. э.)
Египтяне использовали отдельные символы для степеней десятки:
Символ | | (вертикальная черта) | ∩ (путы) | 9 (свиток) | ☞ (лотос) |
Значение | 1 | 10 | 100 | 1 000 |
Число 2 043 записывалось как два лотоса + четыре свитка + три черты. Сложение и вычитание — терпимо, умножение — мучение.
Римская система (с ~VI в. до н. э.)
Семь латинских букв кодируют основные величины:
I | V | X | L | C | D | M |
1 | 5 | 10 | 50 | 100 | 500 | 1000 |
Правило вычитания (IV=4, IX=9, XL=40) делает систему компактнее, но арифметика всё равно крайне неудобна — нет нуля, нет позиции.
Прорыв: позиционные системы
Вавилонская шестидесятеричная (~2000 до н. э.)
Вавилоняне первыми применили позиционный принцип с основанием 60. Два символа — «единица» и «десяток» — составляли числа до 59; дальше — новый разряд. Отсюда наши 60 минут в часе, 360° в окружности.
Майянская система (~IV–IX вв. н. э.)
Позиционная система с основанием 20, уже содержала символ нуля. Использовалась для астрономических вычислений и священных календарей.
Индийская десятичная система (~V–VII вв.)
Индийские математики создали десятичную позиционную систему с нулём и девятью цифрами. Это революция: нуль позволил различать 10, 100, 1 000 без дополнительных символов.
Распространение через арабский мир (IX–XIII вв.)
Аль-Хорезми и другие арабские учёные распространили индийскую систему по всему исламскому миру, а затем через переводы — в Европу. Слово «алгоритм» происходит от латинизации имени аль-Хорезми.
Двоичная система и рождение компьютера
Лейбниц (1679)
Готфрид Лейбниц систематически описал двоичную арифметику, вдохновившись, по его словам, китайской «Книгой перемен» (гексаграммы Ицзин). Он видел в двоичной системе философский смысл: «из ничего (0) и единицы (1) всё сущее».
Буль, Шеннон и электронные вентили (XIX–XX вв.)
Джордж Буль (1854) создал алгебру логики на основе двоичных значений «истина/ложь». Клод Шеннон в 1937 году показал, что булева алгебра реализуется электрическими схемами. Транзистор в двух состояниях — физическое воплощение бита.
Восьмеричная и шестнадцатеричная в программировании
Двоичные числа длинны и неудобны для чтения. Восьмеричная (1 цифра = 3 бита) и шестнадцатеричная (1 цифра = 4 бита) системы стали компактными «стенографиями» для двоичных данных.
# Покажем, как одно и то же число записывается в разных системах
values = [8, 42, 255, 1023]
print(f"{'Дес.':>6} {'Двоич.':>12} {'Восьм.':>8} {'Шест.':>8}")
print("-" * 38)
for n in values:
print(f"{n:>6} {bin(n)[2:]:>12} {oct(n)[2:]:>8} {hex(n)[2:].upper():>8}")
Вывод:
Дес. Двоич. Восьм. Шест.
--------------------------------------
8 1000 10 8
42 101010 52 2A
255 11111111 377 FF
1023 1111111111 1777 3FF
Число 255 в шестнадцатеричной — просто FF: один байт, две шестнадцатеричные цифры. Именно поэтому цвет белого в CSS записывается как #FFFFFF.
Коротко
- Первые системы — непозиционные (зарубки, египетские иероглифы, римские цифры): удобны для записи, плохи для вычислений.
- Вавилоняне первыми применили позиционный принцип (основание 60); он дожил до наших часов и углов.
- Индийская десятичная система с нулём изменила математику; арабы распространили её по миру.
- Лейбниц формализовал двоичную систему; Буль и Шеннон сделали её основой электроники.
- Восьмеричная и шестнадцатеричная — компактные записи двоичных данных; одна hex-цифра = 4 бита.