
Двоичная, троичная, восьмеричная, шестнадцатеричная системы счисления. Арифметика в системах счисления
Штана Альберт Игоревич
Система счисления — знаковая система, позволяющая по определённым правилам записывать числа при помощи символов некоторого алфавита (цифр).
Позиционные системы счисления: количественные значения цифр зависят от их позиций(разрядов) в числе, что позволяет при помощи небольшого набора цифр записывать практически любые по величине числа.
Непозиционные системы счисления: значение числа получается путём суммирования(и вычитания) количественные значения цифр, не зависящих от их местоположения в числе. Например: римская система счисления.
| Римская цифра | M | D | C | L | X | V | I |
|---|---|---|---|---|---|---|---|
| Значение | 1000 | 500 | 100 | 50 | 10 | 5 | 1 |
При расшифровке римская записи числа:
Основание системы счисления определяет изменение количественного значения("во сколько раз") при изменении положения цифры в числе на один разряд правее/левее и равно количеству цифр в алфавите системы счисления.
Теоретически возможно любое значение основания системы счисления, начиная с 2. Для системы счисления с основанием p, меньше 10, в качестве знаков алфавита системы счисления используются десятичные цифры от 0 до (p - 1). Для систем с основанием p, больше 10, используются все 10 десятичных цифр плюс дополнительные символы(обычно — латинские заглавные буквы, начиная с "А"). На практике системы счисления с основанием больше 16 практически не используются (за исключением измерения времени и градусной меры углов, основанных на системе счисления с основанием 60). Обычно при записи числа значение основания системы счисления записывается в виде нижнего индекса после последней цифры числа.
| Система счисления | Основание(p) | Алфавит системы счисления | Пример записи числа |
|---|---|---|---|
| Двоичная | 2 | 0,1 | 101101 |
| Восьмеричная | 8 | 0,1,2,3,4,5,6,7 | 1234567 |
| Десятичная | 10 | 0,1,2,3,4,5,6,7,8,9 | 999 |
| Шестнадцатеричная | 16 | 0,1,2,3,4,5,6,7,8,9,A=10,B=11,C=12,D=13,E=14,F=15 | F4D9 |
Свёрнутая("обычная") форма записи числа — привычная запись числа как последовательности цифр, стоящих на своих разрядах.
Развёрнутая форма записи числа — запись числа в виде суммы произведений его цифр на основание системы счисления в степени, равной значению разряда той или иной цифры числа (для целого числа нумерация разрядов ведётся с нуля справа налево; для дробного числа нумерация разрядов ведётся от десятичной запятой влево по возрастанию, а вправо — по убыванию, при этом разряду единиц присваивается нулевой номер).
Формула (схема) Горнера — преобразованная запись развёрнутой формы, при которой за счёт использования скобок удаётся избавиться от возведения основания счисления в степени. Схема Горнера предполагает рекуррентные вычисления.
Примеры:
а) для целых чисел:
| Формы записи | Двоичное | Восьмеричное | Десятичное | Шестнадцатеричное |
|---|---|---|---|---|
| Свёрнутая | ||||
| Развёрнутая | ||||
| Схема Горнера |
б) для дробных чисел:
| Формы записи | Двоичное | Восьмеричное | Десятичное | Шестнадцатеричное |
|---|---|---|---|---|
| Свёрнутая | ||||
| Развёрнутая |
Перевод числа из недесятичной системы счисления в десятичную осуществляется путём выполнения вычислений по развёрнутой записи исходного числа. Например:
Перевод целого десятичного числа в недесятичную систему счисления выполняется путём последовательного деления числа с остатком на основание системы счисления с последующей записью полученного результата и остатков на каждом шаге деления в порядке, обратном порядку их получения. Деление производится до тех пор, пока полученный на очередном шаге результат не будет меньше основания системы счисления.
Пример: перевести число 12345 в троичную систему счисления.

В результате:
Перевод десятичной дроби в недесятичную систему счисления выполняется путём последовательного умножения числа на основание системы счисления с отбрасыванием получаемых целых частей на каждом шаге умножения и последующей записью полученных значений целых частей по порядку их получения. Умножение производится до получения значения с нулевой дробной частью либо до достижения необходимой точности представления дроби(необходимого количества значащих цифр после запятой).
Пример: требуется перевести число 0,123 в пятеричную систему счисления с точностью до 5 значащих цифр после запятой:
Представление десятичной дроби в недесятичной системе счисления, как правило, является приближённым(за исключением случаев, когда последовательность делений завершается получением нулевой дробной части либо за счёт представления дроби как периодической).
Перевод вещественного десятичного числа в недесятичную систему счисления выполняется в два этапа:
Запись целой части числа в искомой системе счисления дополняется справа запятой и записью дробной части в искомой системе счисления. Пример: требуется перевести число 15,12 в пятеричную систему счисления с точностью до 5 значащих цифр после запятой:
Перевод чисел между недесятичными системами счисления обычно удобнее всего производить через десятичную систему счисления:
Если основания исходной и конечной системы кратны друг другу, то перевод чисел между этими системами счисления можно выполнять по упрощённой схеме.
Перевод двоичного числа в восьмеричную систему счисления производится по триадам цифр:
| Двоичная триада | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
|---|---|---|---|---|---|---|---|---|
| Восьмеричное значение | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Пример: требуется перевести число 1011010 в восьмеричную систему счисления: 1011010 → 001 011 010 → 1 3 2.
В результате:
Перевод восьмеричного числа в двоичную систему счисления также производится по триадам цифр:
Перевод двоичного числа в шестнадцатеричную систему счисления производится по тетрадам цифр:
| Двоичная триада | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Шестнадцатеричное значение | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Пример: требуется перевести число 1011010 из двоичной системы счисления в шестнадцатеричную: 1011010 → 0101 1010 → 5 А. В результате:
Перевод шестнадцатеричного числа в двоичную систему счисления также производится по тетрадам цифр:
Пример: требуется перевести число 1ADA из шестнадцатеричной системы счисления в двоичную: 1 A D A → 0001 1010 1101 1010 → 1101011011010. В результате:
При преобразовании чисел по триадам и тетрадам не забывайте дополнять триады(тетрады) незначащими нулями слева до трёх(четырёх) знаков, а также отбрасывать незначащие нули после завершения преобразования.
Существенную помощь при вычислениях, связанных с переводом чисел в десятичную систему счисления, могут оказать таблицы значений степеней оснований системы счисления. В качестве примера приведена такая таблица для основания системы счисления, равного 2(рекомендуется выучить её наизусть). Аналогично можно составить подобные таблицы и для других оснований систем счисления.
| ... | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Значение | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 | 32768 | ... | 1048576 |
Правила арифметических вычислений в общем едины для любой позиционной системы счисления. Необходима только внимательность при отслеживании переносов между разрядами, возникающих при непривычном недесятичном значении основания системы счисления.



Выполняется в столбик. Пример: требуется сложить 1111 и 111.
Распишем поразрядно действия при сложении в столбик:
Выполняется в столбик, при этом возможен заём единицы из старшего разряда. Пример: требуется вычислить значение выражения 110101 - 1001:
Выполняется в столбик аналогично умножению десятичных чисел. Однако при этом для двоичной системы счисления можно воспользоваться следующими простыми правилами:
Пример: требуется вычислить значение выражения 110101 × 1101(для 2-го нулевого разряда копия множимого пропускается):
Выполняется аналогично делению в столбик десятичных чисел. При этом на каждом шаге деления выполняется последовательное вычитание делителя из очередного делимого до получения остатка, равного 0 или 1, а подсчитанное количество вычитаний записывается как очередное значение частного.
Пример: требуется вычислить значение выражения 10010 / 110.

Пошаговый алгоритм:
В результате: 10010 / 110 = 11.
Ещё пример: требуется вычислить значение выражения 1100 / 10.
Пошаговый алгоритм:
В результате: 1100 / 10 = 110.

Аналогично можно записать правила арифметических операций и для других систем счисления. Рассмотрим восьмеричную систему счисления, в которой используется 8 символов: 0, 1, 2, 3, 4, 5, 6, 7. Правил сложения и умножения очень много, удобнее представить их с помощью таблиц. Рассмотрим три операции: умножение, вычитание и сложение.
☑️Примеры сложения в восьмеричной системе: 1000 + 11 = 1011; 111 + 1 = 112;
Выполним сложение в восьмеричной системе в столбик:
В третьем столбце получилось значение 0, т.к. 4+4=10 в восьмеричной системе, поэтому записываем 0, а 1 переносим в следующий разряд.
☑️Вычесть 3546 - 1271
☑️Умножить 17 на 16 Сначала умножаем поразрядно 1 7 на 6, затем 1 7 на 1
Восьмеричная система обычно используется в областях, связанных с использованием цифровых устройств, применяется при предоставлении прав доступа к файлам в работе с битовыми флагами и масками.
Рассмотрим операции сложения и вычитания в шестнадцатеричной системе счисления. При выполнении операций сложения необходимо помнить, что перенос числа появляется тогда, когда сумма в очередном разряде превышает 15. Бывает удобно, если плохо помнится что значит, например, C в 16-ичной системе, переписать в столбик исходные 16-ичные числа на числа в 10-ичной системе счисления и после этого выполнить сложение. При вычитании заём из старшего разряда равен 16, а все промежуточные разряды(если не получилось у соседнего сразу занять) заполняются старшей цифрой F или 15.
☑️Сложить A5B + C7E
11 + 14 = 1 * 16 + 9 (9)
5 + 7 + 1 = 13 (D)
10 + 12 = 1*16 + 6 (6)
0 + 0 + 1 = 1 (1)
Ответ: 16D9
☑️Вычесть C5B - A7E
(11+16) - 14 = 13 (D)
(5 - 1 + 16) - 7 = 13 (D)
(12 - 1) - 10 = 1 (1)
1 13 13
Ответ: 1DD
Каждый полубайт(4 бита) или тетрада отлично "упаковывается" в одну шестнадцатеричную цифру и поэтому шестнадцатеричная система удобна для представления ячеек памяти компьютера. Также числа от 0 до 255 отлично "упаковываются" в две шестнадцатеричные цифры (00...FF) для кодирования оттенков палитры цвета RGB(красный зелёный синий). Это удобно при записи и представлении цвета пикселя на изображении.
Для упрощения расчётов и исключения возможных ошибок при выполнении арифметических операций в недесятичных системах счисления рекомендуется вначале перевести все числа-операнды в десятичную систему счисления, выполнить расчёты в ней, а затем выполнить перевод результата в искомую систему счисления. Незначащими в записи числа являются только нули, стоящие слева от числа(которые не влияют на числовое значение и могут быть отброшены). Все остальные нули и единицы в записи числа являются значащими!