Арифметика

Другие системы счисления

Почему в часе 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 пальцев?

Связанные уроки

  • alg-01-big-o
Другие системы счисления

0

1

Войти