| Россия |
Двоичные числа и двоичная арифметика
Принцип представления чисел в позиционных системах счисления
Позиционной называется система счисления, в которой вес разряда числа определяется его позицией в записи числа [1].
Вспомним нашу привычную десятичную систему счисления, в которой мы с детства производим все расчеты. Уже в начальной школе мы привыкли к терминам "единицы", "десятки", "сотни", "тысячи", "десятые", "сотые", "тысячные" и не задумываемся над тем, что они означают вес разряда, выраженный в виде числа, равного
, где
- целое число. Например, число 125, 46 можно представить в виде суммы:

сотни десятки единицы десятые доли сотые доли
Аналогично любое число
в десятичной системе счисления можно представить в виде подобной суммы:
![]() |
( 11.1) |
где
- количество знаков в целой части числа,
- количество знаков в дробной части числа,
- вес
-го разряда,
- весовой коэффициент для
-го разряда числа.
Количество возможных вариантов значения коэффициента
в десятичной системе счисления равно
, поскольку для записи чисел в ней используются десять знаков - арабские цифры "0", "1", "2", "3", "4", "5", "6", "7", "8" и "9". Число
является основанием системы счисления. Исторически сложилось, что десятичная система получила наибольшее распространение, хотя по этому принципу можно сделать аналогичную запись в любой другой системе счисления c любым другим основанием. В табл. 11.1 прослежива
ется аналогия между позиционными системами счисления.
Основание системы счисления - это число, равное количеству знаков, которые используются в этой системе для записи чисел.
Для числа в системе счисления с основанием
выражение (11.1) преобразуется к виду:
![]() |
( 11.2) |
| Название системы счисления | Основание системы счисления | Знаки, использующиеся для записи чисел |
|---|---|---|
| Двоичная | 2 | 0, 1 |
| Троичная | 3 | 0, 1, 2 |
| Четверичная | 4 | 0, 1, 2, 3 |
| … | … | … |
| Восьмеричная | 8 | 0, 1, 2, 3, 4, 5, 6, 7 |
| … | … | … |
| Десятичная | 10 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 |
| … | … | … |
| Шестнадцатеричная | 16 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F |
| … | … | … |
С началом развития цифровой вычислительной техники большой интерес стала вызывать двоичная система, поскольку вычислительная машина любого поколения и любой степени сложности - это совокупность логических схем. Работа элементов этих схем основана на ключевом режиме работы транзистора, в котором он может быть только в двух состояниях, принимаемых за логический 0 и логическую 1.
Запись двоичного числа, как будет показано ниже, как правило, довольно длинна и громоздка, поэтому для более короткой записи двоичных чисел применяются восьмеричные и шестнадцатеричные числа. Выбор именно этих систем обусловлен тем, что их основания равны целой степени числа 2. Основание восьмеричной системы
, а основание шеснадцатиричной системы - это
. Для записи шестнадцатеричных чисел арабских цифр не хватает, поэтому используются первые шесть заглавных букв латинского алфавита.
Итак, далее мы подробно рассмотрим именно эти позиционные системы - двоичную, восьмеричную, шестнадцатеричную и их связь с привычной нам десятичной системой счисления.
Приведем примеры записи чисел в указанных системах и найдем их десятичные эквиваленты по формуле (11.2).
Для двоичного числа:

Здесь и далее будем придерживаться следующего правила: числа в двоичной, восьмеричной и шестнадцатеричной системах записываются с указанием основания, десятичные - без этой записи.
Для восьмеричного числа:

Для шестнадцатеричного числа:

Округление относится к дробной части числа, целая часть переводится точно. Особенностью перевода из шестнадцатеричного кода в десятичный код является то, что в качестве коэффициента
используется десятичный эквивалент шестнадцатеричного знака в соответствии с таблицей 11.2. Для нашего примера вместо знака "
" в расчетную формулу (11.2) подставляется десятичное число
.
Из рассмотренных примеров видно, что общая формула (11.2) может использоваться для перевода числа из системы счисления с любым основанием в десятичную.
Перевод чисел из одной системы счисления в другую
Перевод из десятичной системы в любую другую. Перевод целых чисел
Целое десятичное число нужно поделить на основание новой системы счисления. Остаток от этого деления является самым младшим разрядом в новой записи числа. Результат деления вновь делится на основание. Остаток от этого деления будет следующим разрядом в новой записи числа, результат деления вновь делится на основание и т.д. до тех пор, пока в результате деления получится число, меньшее по величине, чем основание новой системы. Остаток этого последнего деления будет предпоследним разрядом в новой записи числа, а результат этого последнего деления - самым старшим разрядом в новой записи числа.
Проверка перевода осуществляется по формуле (11.2), так, как это показано ниже на примерах.
Пример. Перевести десятичное число 125 в двоичную, восьмеричную и шестнадцатеричную системы счисления. Проверить результаты по формуле (П11.2).
Проверка:
-
в двоичном коде:
; -
в восьмеричном коде
; -
в шестнадцатеричном коде -
.
В рассмотренном примере при переводе вместо коэффициента
используется его десятичный эквивалент
в соответствии с таблицей 11.2.
Перевод из двоичной системы в шестнадцатеричную (восьмеричную)
Как уже было сказано выше, шестнадцатеричный и восьмеричный коды используются для более компактной и удобной записи двоичных чисел. Так, программирование в машинных кодах осуществляется в большинстве случаев в шестнадцатеричном коде. Правила перевода для шестнадцатеричной и восьмеричной системы структурно одинаковы, отличия для восьмеричной системы отображаются в скобках.
Двоичная запись числа делится на группы по четыре ( три ) двоичных знака влево и вправо от запятой, отделяющей целые и дробные части Неполные крайние группы (если они есть) дополняются нулями до четырех ( трех ) знаков. Каждая группа заменяется одним шестнадцатеричным ( восьмеричным ) знаком в соответствии с кодом группы (табл. 11.2).
| Двоичная группа | Шестнадцатеричный знак | Десятичный эквивалент | Двоичная группа | Восьмеричный знак |
|---|---|---|---|---|
| 0000 | 0 | 0 | 000 | 0 |
| 0001 | 1 | 1 | 001 | 1 |
| 0010 | 2 | 2 | 010 | 2 |
| 0011 | 3 | 3 | 011 | 3 |
| 0100 | 4 | 4 | 100 | 4 |
| 0101 | 5 | 5 | 101 | 5 |
| 0110 | 6 | 6 | 110 | 6 |
| 0111 | 7 | 7 | 111 | 7 |
| 1000 | 8 | 8 | ||
| 1001 | 9 | 9 | ||
| 1010 | A | 10 | ||
| 1011 | B | 11 | ||
| 1100 | C | 12 | ||
| 1101 | D | 13 | ||
| 1110 | E | 14 | ||
| 1111 | F | 15 |
Примеры:
- перевод в шестнадцатеричную систему:

- перевод в восьмеричную систему:

Перевод из шестнадцатеричной (восьмеричной) системы в двоичную
Обычно программы в машинных кодах записаны в шестнадцатеричной системе счисления, реже - в восьмеричной. При необходимости отдельные числа такой программы записываются в двоичном коде, например, при рассмотрении форматов регистров, кодов операции команд и т.п. В этом случае нужен обратный перевод из шестнадцатеричной (восьмеричной) системы счисления в двоичную по следующему правилу.
Каждая цифра (без всяких сокращений!) шестнадцатеричного ( восьмеричного ) числа заменяется одной двоичной группой из четырех ( трех ) двоичных знаков (табл. 11.2).
Примеры:
- для шестнадцатеричного числа:
; - для восьмеричного числа:
.
Как показано в примерах, крайние нули слева и справа при желании можно не писать, но такое сокращение делается уже после перевода в двоичную систему.




