01Что такое система счисления
Система счисления задаёт две вещи: какими знаками пишут числа и как по записи узнать значение.
Знаки называют цифрами, их полный набор — алфавитом системы. Алфавит десятичной системы состоит из десяти цифр от 0 до 9, двоичной — из двух: 0 и 1. В шестнадцатеричной цифр шестнадцать, и после девятки идут латинские буквы A, B, C, D, E и F.
Основание позиционной системы равно числу цифр в её алфавите. Оно же показывает, во сколько раз соседний разряд слева весит больше. У десятичной системы основание 10, у двоичной 2, у шестнадцатеричной 16.
Основание пишут маленьким индексом справа внизу: 1012 — число в двоичной системе, а 10110 — сто один. Число без индекса считают десятичным. Сам индекс всегда пишут десятичными цифрами, иначе основание любой системы выглядело бы одинаково.
Из определения следуют два правила, по которым проверяют почти любой ответ. Самая большая цифра на единицу меньше основания: в восьмеричной системе нет цифры 8, в двоичной нет двойки. Само основание в своей системе записывается как 10: 2 = 102, 8 = 108, 16 = 1016.
Поэтому запись без индекса бывает обманчивой. Цифры 101 могут означать сто один, пять в двоичной системе или шестьдесят пять в восьмеричной. Двоичное число читают по цифрам: «один, ноль, один», а не «сто один», чтобы не путать его с десятичным.
02Позиционные и непозиционные: в чём разница
Всё решает один вопрос: меняется ли значение цифры, если переставить её на другое место.
В позиционной системе значение цифры зависит от места, которое она занимает. В числе 555 три одинаковые пятёрки обозначают пять сотен, пять десятков и пять единиц. Место цифры называют разрядом. Разряды нумеруют справа налево, начиная с нуля.
В непозиционной системе знак обозначает одно и то же число, где бы он ни стоял. В римской записи XXX три знака X, и каждый равен десяти: 10 + 10 + 10 = 30.
| Признак | Непозиционная | Позиционная |
|---|---|---|
| Значение цифры | не зависит от места | зависит от разряда |
| Ноль | не нужен | обязателен: отмечает пустой разряд |
| Большие числа | нужны новые знаки или длинная запись | хватает тех же цифр |
| Счёт на письме | столбиком не посчитать | складывают и умножают по разрядам |
| Примеры | единичная, египетская, римская | десятичная, двоичная, восьмеричная, шестнадцатеричная |
Позиционная запись вытеснила остальные благодаря нулю и счёту столбиком. Для миллиона египтянам понадобился отдельный иероглиф. Римляне считали на абаке и записывали уже готовый результат. В десятичной системе миллион пишут теми же десятью цифрами, а умножают прямо на бумаге.
Встречаются и смешанные записи. Время считают по 60 секунд в минуте и по 24 часа в сутках, поэтому в записи 2 сут 05:30:00 у соседних разрядов разные основания.
03Непозиционные системы: от зарубок до римских цифр
В единичной, египетской и римской системах значения знаков складывают. Римская добавляет к сложению вычитание.
Единичная. Число записывают столькими одинаковыми знаками, сколько в нём единиц: палочками, зарубками, узелками. Пять — это |||||. Такую запись поймёт любой, но число 100 превращается в сто чёрточек. Ею пользуются и сейчас, когда считают голоса или очки чёрточками по пять.
Египетская. Древние египтяне ввели отдельные иероглифы для 1, 10, 100, 1000, 10 000, 100 000 и 1 000 000: черту, путы, моток верёвки, цветок лотоса, палец, головастика и человека с поднятыми руками. Число собирали из этих знаков. 243 — это два мотка верёвки, четыре пут и три черты. Каждый знак повторяли до девяти раз, а порядок на значение не влиял.
Славянская. На Руси числа записывали буквами кириллицы, над ними ставили знак титло: А = 1, В = 2, Г = 3, Д = 4, І = 10, К = 20, Р = 100. Букву Б пропускали, в греческом алфавите, откуда взят порядок, её не было. Значения букв складывали, как у египтян. Такой записью пользовались до реформ Петра I, потом её заменили арабские цифры.
Римская. Семь знаков, и все они латинские буквы.
| Знак | I | V | X | L | C | D | M |
|---|---|---|---|---|---|---|---|
| Число | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
- Знаки ставят от большего к меньшему и складывают. В MDCLXVI каждый знак встречается по разу.MDCLXVI = 1666
- Меньший знак перед большим вычитают. Так пишут только шесть пар: IV, IX, XL, XC, CD, CM.IX = 9, XC = 90
- Один знак подряд ставят не больше трёх раз. V, L и D не повторяют вовсе, поэтому 4 — это IV, а не IIII.40 = XL
Число читают слева направо и следят, не стоит ли знак перед бо́льшим. В XLIX две такие пары: XL = 40 и IX = 9, всего 49. Записи IL для 49 нет, потому что I вычитают только из V и X, X — только из L и C, а C — из D и M.
Год MMXXVI читают сложением: 1000 + 1000 + 10 + 10 + 5 + 1 = 2026. В обратную сторону число раскладывают по разрядам. 1994 = 1000 + 900 + 90 + 4, по знакам M, CM, XC и IV, вместе MCMXCIV.
Римскую систему считают непозиционной, хотя место знака в ней кое-что значит: IV и VI дают 4 и 6. Но от положения зависит только, прибавить знак или вычесть, а вес не меняется: I везде равна единице. Нуля в римской записи нет, и по правилу трёх повторов самое большое число — MMMCMXCIX, то есть 3999. Римскими цифрами до сих пор пишут века (XXI век), номера монархов (Пётр I), тома, главы и часы на циферблате. Перевести число в римскую запись и обратно можно в конвертере римских цифр.
04Позиционные системы: 10, 2, 8 и 16
Правило записи у них одно: вес разряда равен основанию в степени номера разряда. Различаются они основанием и тем, где их применяют.
| Система | Основание | Цифры | Где применяют |
|---|---|---|---|
| Десятичная | 10 | 0–9 | обычный счёт, деньги, измерения |
| Двоичная | 2 | 0, 1 | процессоры, память, передача данных |
| Восьмеричная | 8 | 0–7 | права доступа к файлам в Linux, старые ЭВМ |
| Шестнадцатеричная | 16 | 0–9, A–F | цвета в вёрстке, коды символов, адреса памяти |
Десятичная. Пришла из Индии через арабских математиков, поэтому цифры 0–9 называют арабскими. Основание 10 связывают с числом пальцев на руках.
Двоичная. У электронной схемы два устойчивых состояния: ток есть или его нет, ячейка заряжена или разряжена. Двух цифр для них хватает. Одна двоичная цифра — бит, восемь бит — байт. В байт помещаются числа от 0 до 255, то есть от 000000002 до 111111112. Запись выходит длинной: 1000 в двоичной системе — это 11111010002, десять знаков вместо четырёх.
В программах основание пишут приставкой перед числом, индексов там нет. В Python и JavaScript 0b101101 — двоичная запись, 0o55 — восьмеричная, 0x2D — шестнадцатеричная, и все три равны 45. Приставку 0x для шестнадцатеричных чисел понимают почти все языки программирования.
Восьмеричная. Три двоичных разряда дают ровно восемь сочетаний, от 000 до 111, поэтому одна восьмеричная цифра заменяет три бита. Чаще всего её встречают в правах доступа к файлам: в команде chmod 755 каждая цифра кодирует три флага — чтение, запись и выполнение.
Шестнадцатеричная. Одна цифра заменяет четыре бита, две цифры — целый байт. Поэтому байты, коды символов и адреса памяти записывают в ней: короче, чем в двоичной, и переводится проще, чем десятичная. Цвет #FF8800 в CSS — это три байта: красный FF = 255, зелёный 88 = 136, синий 00 = 0.
Бывают и другие основания. Шестидесятеричная система пришла из Вавилона, от неё остались 60 минут в часе и 60 секунд в минуте. На троичной системе работала советская ЭВМ «Сетунь».
05Развёрнутая форма записи числа
Развёрнутая форма показывает число суммой: каждая цифра умножена на вес своего разряда.
Разряды считают справа налево, у самого правого номер 0. Любое основание в нулевой степени равно единице, поэтому последняя цифра всегда означает единицы. Вторая справа означает десятки в десятичной системе, двойки в двоичной и шестнадцатки в шестнадцатеричной.
Веса разрядов числа 1011012. Складываются только веса над единицами, нули ничего не добавляют.
Для восьмеричной и шестнадцатеричной записи тот же порядок: 558 = 5·81 + 5·80 = 45, 2D16 = 2·161 + 13·160 = 45. Букву D сначала заменяют числом 13, потом умножают на вес разряда.
Развёрнутая форма объясняет и границы разрядов. Самое большое число из n цифр на единицу меньше основания в степени n. В байте восемь двоичных разрядов, поэтому 111111112 = 28 − 1 = 255. Трёхзначных десятичных чисел не больше 999, то есть 103 − 1.
С дробной частью правило то же, только степени после запятой отрицательные: 25,3 = 2·101 + 5·100 + 3·10−1. В двоичной системе 0,12 = 1·2−1 = 0,5.
Развёрнутая форма нужна не только для контрольной. Через неё число из любой системы переводят в десятичную: записали сумму, посчитали, ответ готов. С этого способа начинается следующая глава.
06Перевод из одной системы в другую
В десятичную переводят развёрнутой формой, из десятичной — делением. Между 2, 8 и 16 хватает групп цифр.
В десятичную. Записывают развёрнутую форму и считают. Буквы шестнадцатеричной системы заменяют числами: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
578 = 5·8 + 7 = 47
Из десятичной. Число делят на новое основание с остатком, частное снова делят, и так до нуля. Остатки выписывают в обратном порядке, от последнего к первому.
- Делим 38 на 2. Частное 19 делим дальше, остаток запоминаем.остаток 0
- Делим частные дальше. 19 : 2 = 9, остаток 1. 9 : 2 = 4, остаток 1. 4 : 2 = 2, остаток 0. 2 : 2 = 1, остаток 0. 1 : 2 = 0, остаток 1.0, 1, 1, 0, 0, 1
- Читаем остатки снизу вверх. Последний остаток становится первой цифрой.38 = 1001102
Небольшие числа в двоичную переводят и без деления, вычитанием степеней двойки. Берут самую большую степень, которая помещается в число, и вычитают её. 45 − 32 = 13, 13 − 8 = 5, 5 − 4 = 1, 1 − 1 = 0. Занятые степени 32, 8, 4 и 1 получают единицы, остальные разряды нули: 101101. Этот способ удобен, если степени двойки до 1024 помнятся наизусть.
Готовый ответ проверяют обратным переводом через развёрнутую форму. Есть и быстрая проверка на чётность: у чётного числа двоичная запись кончается нулём, у нечётного единицей. Если 38 превратилось в запись с единицей на конце, остатки выписаны не в том порядке.
В шестнадцатеричную переводят так же, только делят на 16, а остатки от 10 до 15 пишут буквами. 200 : 16 = 12, остаток 8. 12 : 16 = 0, остаток 12, то есть C. Ответ C816.
Дробную часть переводят умножением. 0,375 × 2 = 0,75, целая часть 0. 0,75 × 2 = 1,5, целая часть 1. Дробный остаток 0,5 × 2 = 1, целая часть 1. Целые части выписывают сверху вниз: 0,375 = 0,0112.
Между 2, 8 и 16 — триадами и тетрадами. Восемь — это 23, шестнадцать — 24. Поэтому одна восьмеричная цифра равна ровно трём битам, это триада, а шестнадцатеричная — четырём, это тетрада. Десятичная система в таком переводе не участвует.
- Делим двоичную запись на группы справа налево. Для восьмеричной по три цифры, для шестнадцатеричной по четыре. Неполную левую группу дополняем нулями.101 111 и 0010 1111
- Меняем каждую группу на одну цифру. 101 = 5, 111 = 7. 0010 = 2, 1111 = F.578 и 2F16
- Обратно — по той же таблице. Каждую цифру расписываем тремя или четырьмя битами и убираем нули слева.3A16 = 1110102
Из восьмеричной в шестнадцатеричную идут через двоичную: расписывают триады и собирают из тех же бит тетрады. 578 даёт 101 111, те же биты по четыре — 0010 1111, в итоге 2F16.
07Таблица чисел от 0 до 16
Первые семнадцать чисел в четырёх позиционных системах и римской записью. Двоичная колонка до 7 служит таблицей триад, до 15 — таблицей тетрад.
| Десятичная | Двоичная | Восьмеричная | Шестнадцатеричная | Римская |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | — |
| 1 | 1 | 1 | 1 | I |
| 2 | 10 | 2 | 2 | II |
| 3 | 11 | 3 | 3 | III |
| 4 | 100 | 4 | 4 | IV |
| 5 | 101 | 5 | 5 | V |
| 6 | 110 | 6 | 6 | VI |
| 7 | 111 | 7 | 7 | VII |
| 8 | 1000 | 10 | 8 | VIII |
| 9 | 1001 | 11 | 9 | IX |
| 10 | 1010 | 12 | A | X |
| 11 | 1011 | 13 | B | XI |
| 12 | 1100 | 14 | C | XII |
| 13 | 1101 | 15 | D | XIII |
| 14 | 1110 | 16 | E | XIV |
| 15 | 1111 | 17 | F | XV |
| 16 | 10000 | 20 | 10 | XVI |
На телефоне колонки подписаны основаниями: 10, 2, 8, 16 и римская запись.
откроется окно печати — там выберите «Сохранить как PDF»
Посмотрите, где каждая система переходит на второй разряд: двоичная на числе 2, восьмеричная на 8, шестнадцатеричная на 16. В этой строке запись всегда равна 10, как и сказано в первой главе.
В двоичной колонке видна закономерность. Последняя цифра чередуется через одну строку, вторая справа меняется каждые две строки, третья — каждые четыре. Так таблицу восстанавливают по памяти, если её нет под рукой. Для перевода между 2, 8 и 16 достаточно помнить восемь триад и шестнадцать тетрад, а их задают первые шестнадцать строк.
08Тренажёр: переведите число
Задания идут вперемешку: в десятичную и из неё, триады и тетрады, римские числа. Буквы шестнадцатеричной системы можно вводить строчными.
Переведите в десятичную систему
Ваш ответ
Своё число: переведём во все системы по шагам
Считает браузер, ответы никуда не отправляются. Нули слева в ответе не мешают: 0101 и 101 засчитываются одинаково.