Россия, Sankt Piterburg, 182, 1997 |
Двоичные числа и двоичная арифметика
Принцип представления чисел в позиционных системах счисления
Позиционной называется система счисления, в которой вес разряда числа определяется его позицией в записи числа [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).
Примеры:
- для шестнадцатеричного числа: ;
- для восьмеричного числа: .
Как показано в примерах, крайние нули слева и справа при желании можно не писать, но такое сокращение делается уже после перевода в двоичную систему.