Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Десятичные числа. Система счисления в остаточных классах. Операции над числами



Десятичные числа

Кодирование десятичных чисел

При использовании в ЦВМ десятичных чисел они кодируются группой двоичных разрядов. Для представления одной десятичной цифры требуется не менее четырех двоичных разрядов. Соответствие между десятичной цифрой и ее двоичным представлением называют двоичным кодом десятичной цифры. Наиболее естественным представляется кодирование десятичных цифр позиционными двоичными кодами с естественными весами разрядов. Такой код называется кодом «8421».

Недостатком кодирования десятичных цифр в коде «8421» состоит в несоответствии веса десятичного и шестнадцатеричного переносов.

Для устранения этого противоречия можно выбрать другие способы кодирования десятичных цифр. Например, код «8421+3» (код с избытком 3) позволяет при сложении получать сумму «с избытком 6», при этом вес переноса соответствует десятичному.

Можно подобрать такие веса двоичных разрядов при кодировании десятичных цифр, чтобы их сумма равнялась 10, например, код «5211». Но при этом нарушается свойство функциональности соответствия десятичных цифр и их двоичного представления. Для преодоления этого недостатка всегда сначала заполняются младшие разряды кода.

На таблице 4 представлены некоторые кодировки десятичных цифр двоичными числами.

Таблица 4 Двоичные коды десятичных цифр

Цифра Код «8421» Код «8421+3» Код «5211»

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

Арифметические операции с десятичными числами

Рассмотрим выполнение операции сложения десятичных чисел в коде «8421».

Пример 43. Сложить числа 4754 и 2917.

A = 4754 = 0100 0111 0101 0100

B = 2917 = 0010 1001 0001 0111

C = 7671 = 0111 ← 0000 0110 1011

7 0 6 11

Если сумма тетрад больше 9, но меньше 15 (4-я тетрада в данном примере), двоичный перенос не формируется, в этом случае нужно выработать искусственный перенос и удалить из тетрады 10, что соответствует добавлению шестерки (0110) и передаче обязательно возникающего при этом переноса в следующий старший разряд.

Если из тетрады был двоичный перенос (вторая тетрада в данном примере), то он «унес» из тетрады 16, в то время как десятичный перенос должен «уносит» только 10. В такие тетрады тоже нужно добавить шестерки:

0111 0000 0110 ← 1011

0110 0110

0111 0110 0111 0001

7 6 7 1

Пример 44. Сложить числа 3852 и 5179.

A = 3852 = 0011 1000 0101 0010

B = 5179 = 0101 0001 0111 1001

C = 9031 = 1000 1001 11001011

8 9 12 11

Далее,

1000 1001 ← 1100 ← 1011

0110 0110

1000 1010 0011 0001

8 10 3 1

И наконец,

1000 ← 1010 0011 0001

0110_____________

1001 0000 0011 0001

9 0 3 1

Может получиться так, что старшие тетрады также потребуется корректировать.

Пример 45. Сложить числа 9999 + 1.

A = 9999 = 1001 1001 1001 1001

B = 0001 = 0000 0000 0000 0001

C =10000 = 1001 1001 1001 1010

9 9 9 10

Далее,

1001 1001 1001 ← 1010

0110

1001 1001 1010 0000

9 9 10 0

Далее,

1001 1001← 1010 0000

0110______

1001 1010 0000 0000

9 10 0 0

Далее,

1001 ← 1010 0000 0000

0110____________

1010 0000 0000 0000

10 0 0 0

И наконец,

←1010 0000 0000 0000

____ 0110___________________

0001 0000 0000 0000 0000

1 0 0 0 0

Недостатки применения кода «8421»:

Необходимо отслеживать не только переносы из тетрад, но и значения модулей тетрад предварительной суммы;

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

Сложение в коде «8421+3». В этом коде каждая десятичная цифра представляется как ai’=ai+0011, где ai – код «8421» цифры. Тогда

cih=(ai+3)+(bi+3)+ pi-1= ai+ bi+ pi-1+6,

где cih – предварительная сумма, в тетраде всегда будет формироваться истинное значение десятичного переноса, т.к. если ai+ bi+ pi-1>9, то ai+ bi+ pi-1+6>15.

Если переноса не было, то результат формируется «с избытком 6», следовательно, нужно удалить из тетрады лишнюю шестерку дополнением тройки и игнорированием переноса (потеря 16).

Если перенос был, то его вес равен 16, а вес десятичного переноса – 10. Т.е. Перенос уносит лишнюю 6, которую нужно добавить при коррекции. Но так как сложение тетрад «с избытком 3» приводит к получению суммы «с избытком 6», поэтому вместо добавления шестерки достаточно добавить тройку.

То есть коррекции в коде «8421+3» подлежат все тетрады предварительной суммы.

Достоинства:

коррекция определяется только значениями переносов из тетрад предварительной суммы;

коррекция может проводиться параллельно во всех разрядах.

Задания.

Сложить десятичные числа:

1) 4824 и 2901;

2) 8572 и 7760;

3) 1086 и 4732;

4) 3351 и 3087;

5) 6658 и 3928;

6) 6188 и 1951.




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.