Двоично-десятичная система счисления



Двоично-десятичная система счисления широко используется в цифровых устройствах, когда основная часть операций связана не с обработкой и хранением вводимой информации, а с ее вводом и выводом на какие-либо индикаторы с десятичным представлением полученных результатов (микрокалькуляторы, кассовые аппараты и т. п.).

В двоично-десятичной системе счисления цифры от 0 до 9 представляют четырехразрядными двоичными комбинациями от 0001 до 1001, т.е. двоичными эквивалентами десяти первых шестнадцатеричных чисел. Преобразования из двоично-десятичной системы в десятичную систему и обратные преобразования выполняются путем прямой замены четырех двоичных цифр одной десятичной цифрой или обратной замены.

Пример.Преобразовать число 001101112-10 из двоично-десятичной системы в десятичную систему.

Ответ: 001101112-10 = 3710.

Две двоично-десятичные цифры составляют 1 байт. Таким образом, с помощью 1 байта можно представить значения от 0 до 99, а не от 0 до 255, как при использовании 8-разрядного двоичного кода. Используя 1 байт для представления каждых двух десятичных цифр, можно формировать двоично-десятичные числа с любым требуемым числом десятичных разрядов.

Так, если число 1000 0011 0010 0111 рассматривать как двоичное, то его десятичный эквивалент 1000 0011 0010 01112 = 3357510 в несколько раз больше десятичного эквивалента двоично-десятичного числа 1000 0011 0010 01112-10 = 832710.

 

Арифметические действия с нормализованными числами

Сложение и вычитание

К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ.

Сначала производится подготовительная операция, называемая выравниванием порядков.

В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов.

После каждого сдвига порядок увеличивается на единицу, а освободившиеся старшие разряды заполняются нулями. В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются.

В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево.

Нормализацией называется выбор такого значения порядка, при котором старший разряд мантиссы имеет значение 1. При нормализации возможны две ситуации:

− результат меньше 1/2, то есть старшие разряды мантиссы нулевые. Если при этом результат представлен в прямом коде, мантисса сдвигается влево до тех пор, пока первая значащая 1 не окажется в старшем разряде. Если же результат представлен в обратном или дополнительном коде (отрицательный), производится сдвиг влево до появления в старшем разряде первого значащего нуля. При каждом сдвиге значение порядка уменьшается на 1;

− результат больше 1, то есть разрядная сетка переполнена. В этом случае мантисса сдвигается вправо на один разряд с одновременным увеличением порядка на 1.

Правила выполнения основных арифметических операций справедливы для чисел любой позиционной системы счисления.

Примеры

1) Сложить десятичные нормализованные числа 0,536·106 и 0,284·103.

Разность порядков слагаемых здесь равна трём (6-3=3), поэтому перед сложением мантисса второго числа сдвигается на три разряда вправо:

+
0,536  ·106

0,000284 ·106

0,536284 ·106

2) Сложить двоичные нормализованные числа 0,11011·210    и 0,10111·2–1.

Разность порядков слагаемых здесь равна трем (102+12=112=310), поэтому перед сложением мантисса второго числа сдвигается на три разряда вправо:

+
0,11011 ·210

0,00010111·210

0,11101111·210

3) Сложить шестнадцатеричные нормализованные числа 0,1В5·163  и 0,34Е·16–1.

Разность порядков слагаемых здесь равна четырём (316+116=416=410), поэтому перед сложением мантисса второго числа сдвигается на четыре разряда вправо:

+
0,1В5   ·163

0,000034Е·163

0,1В5034Е·163

4) Выполнить вычитание двоичных нормализованных чисел 0,10101·210 и 0,11101·21.

Разность порядков уменьшаемого и вычитаемого здесь равна единице (102-12=12=110), поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:

-
0,10101 ·210

0,011101·210

0,001101·210

Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0,1101·20.

4) Выполнить вычитание восьмеричных нормализованных чисел 0,125·83 и 0,32·8-2 Разность порядков уменьшаемого и вычитаемого здесь равна пяти (38+28=58=510), поэтому перед вычитанием мантисса второго числа сдвигается на пять разрядов вправо:

-
0,125    ·83

0,0000032 ·83

0,0147746 ·83

Результат получился не нормализованным, поэтому его мантисса сдвигается влево на один разряд с соответствующим уменьшением порядка на одну единицу: 0,147746 ·82.

 

Умножение и деление

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

1. Мантиссы перемножаются или одна делится на другую;

2. Порядки при умножении складываются, а при делении вычитаются;

3. При необходимости мантисса результата нормализуется.

Примеры:

1). Выполнить умножение двоичных нормализованных чисел:

(0,11101 . 2101) . (0,1001 . 211) = (0,11101 . 0,1001) . 2(101+11) = 0,100000101 . 21000.

2). Выполнить умножение восьмеричных нормализованных чисел:

(0,765 . 84) . (0,537 . 85) = (0,765 . 0,537) . 8(4+5) = 0,527353 . 811.

3). Выполнить умножение шестнадцатеричных нормализованных чисел:

(0,А25 . 167) . (0,6С . 169) = (0,А25 . 0,6С) . 16(7+9) = 0,4479С . 1610.

4). Выполнить деление двоичных нормализованных чисел:

(0,100000101 . 21000) : (0,1001 . 211) = (0,100000101 : 0,1001) . 2(1000-11) = 0,11101 . 2101

5). Выполнить деление восьмеричных нормализованных чисел:

(0,527353 . 811) : (0,537 . 85) = (0,527353 : 0,537) . 8(11-5) = 0,765 . 84

6). Выполнить деление шестнадцатеричных нормализованных чисел:

(0,4479С . 1610) : (0,6С . 169) = (0, 4479С : 0,6С) . 16(10-9) = 0,А25 . 167.

 


Дата добавления: 2019-09-08; просмотров: 845; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!