Арифметика
Другие системы счисления
Почему в часе 60 минут, а не 100? Почему программисты используют буквы A-F как цифры? Системы счисления - это языки для записи чисел, и разные культуры изобретали свои. Некоторые оказались удивительно живучими.
- **Программирование:** hex для цветов, адресов, кодов
- **Unix/Linux:** восьмеричные права доступа
- **Время и углы:** наследие шестидесятеричной системы
Восьмеричная система
Системы счисления, которыми пользуются сегодня, имеют конкретные корни: вавилонские астрономы работали в системе по основанию 60 около 2000 г. до н. э., индийские математики ввели десятичную позиционную систему к V веку, а Лейбниц формализовал двоичную систему в 1703 году. Современные компьютеры выполняют триллионы двоичных операций в секунду, биткоин-адреса записываются в base-58 (47-51 символ), а IPv6-адреса - в base-16 (32 шестнадцатеричных знака).
Восьмеричная система (основание 8) использует цифры 0-7. Она удобна, потому что каждая восьмеричная цифра - это ровно 3 бита.
**Восьмеричная система (octal):** Цифры: 0, 1, 2, 3, 4, 5, 6, 7 Позиции: 8⁰=1, 8¹=8, 8²=64, 8³=512... 1 восьмеричная цифра = 3 бита (2³ = 8)
Восьмеричная система была популярна в ранних компьютерах, но сейчас чаще используется шестнадцатеричная.
Переведите 110101₂ в восьмеричную систему:
Шестнадцатеричная система
Шестнадцатеричная система (hex) - самая популярная в программировании. Для 16 цифр используют 0-9 и A-F.
**Применения hex:** • **Цвета в CSS:** #RRGGBB (6 hex-цифр) • **Адреса памяти:** 0x7FFE5A3B • **MAC-адреса:** 00:1A:2B:3C:4D:5E • **Unicode:** U+0041 = 'A'
Hex компактнее двоичной записи в 4 раза. Вместо 11111111₂ пишем FF₁₆. Программисты читают hex почти как десятичные числа.
Чему равен цвет #00FF00?
Универсальный перевод
Алгоритм перевода работает для любого основания. Из десятичной - делим на основание, в десятичную - умножаем на позиции.
**Быстрый перевод через двоичную:** 65₈ → двоичная → hex 65₈ = 110 101₂ = 0011 0101₂ = 35₁₆ Добавляем нули слева для выравнивания групп.
На практике программисты редко переводят вручную - IDE и калькуляторы делают это мгновенно. Но понимание алгоритма важно для отладки.
Переведите 100₁₀ в шестнадцатеричную систему:
Исторические системы
Разные цивилизации использовали разные основания. Некоторые из них дошли до наших дней в неожиданных местах.
**Почему победила десятичная:** Десять пальцев - универсально для людей. Но для вычислений 10 - не лучший выбор. Двоичная (для машин) и двенадцатеричная (много делителей) были бы удобнее.
Выбор основания - культурная условность, а не математическая необходимость. Все позиционные системы эквивалентны по выразительности.
Десятичная система - естественная и единственно правильная
Десятичная система - культурная условность, связанная с 10 пальцами
Математически все позиционные системы эквивалентны. Выбор основания 10 - следствие анатомии человека (10 пальцев), а не математической необходимости. Компьютеры эффективнее работают в двоичной, для делимости лучше подошла бы 12-ричная.
Откуда в часах 60 минут?
Ключевые идеи
- Восьмеричная: 0-7, 1 цифра = 3 бита
- Шестнадцатеричная: 0-F, 1 цифра = 4 бита
- Перевод: через десятичную или группировку бит
- 60-ричная система дала нам минуты и градусы
Связанные темы
Системы счисления связаны с историей и информатикой:
- Двоичная система — Основа для hex и octal
- Степени — Позиции = степени основания
- Делимость — Выбор основания
Вопросы для размышления
- Почему для программирования hex удобнее восьмеричной системы?
- Какие преимущества имело бы основание 12 перед 10?
- Как бы изменилась математика, если бы у людей было 8 пальцев?