Задания для самостоятельной работы




Лабораторная работа №3. Основы машинной арифметики

 

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

Любые данные (числа, текст, команды программ и др.) в памя­ти компьютера представлены двоичными кодами, которые представ­ляют собой совокупность битов. В частности, двоичный код, содер­жащий 8 бит (говорят: «8 разрядов»), называется байтом. Для хранения данных используют следующие форматы двоичного кода: 8-разрядный (байт), 16-разрядный (полуслово), 32-разрядный (сло­во) и 64-разрядный (двойное слово).

Для выполнения арифметических операций используют специ­альные коды представления чисел, которые позволяют свести опе­рацию вычитания чисел к арифметическому сложению этих кодов. Различают прямой, обратный и дополнительный коды. Прямой код используется для представления отрицательных чисел в памяти ком­пьютера, а также при выполнении операций умножения и деления. Обратный и дополнительный коды применяются для выполнения операции вычитания, которую заменяют операцией сложения чисел с разными знаками: а - b = а + (-b).

В коде числа каждому разряду соответствует определенный эле­мент разрядной сетки. Для записи знака числа в разрядной сетке имеется строго определенный фиксированный разряд, обычно это крайний разряд разрядной сетки.

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

 

Задание 1. Запишите следующие числа в прямом, обратном и дополнительном кодах.

а) 1101011; б) -101011; в) -101101; г) -1100111.

 

Методические указания.

Прямой код целого числа. Под прямым кодом двоичного числа понимают запись самого числа. Значение знакового разряда для по­ложительных чисел определяют равным нулю (0), для отрицательных чисел — единице (1). Например, если для записи кода используется байт, то[I]:

Число Прямой код
+1101 0,0001101
-1101 1,0001101

Крайний левый разряд в прямом коде нами отведен под знак числа, остальные разряды — под само число. Число располагаем в разрядной сетке так, чтобы цифра младшего разряда числа занима­ла крайнюю правую ячейку.

Знаковый разряд —> | 0, | 0 | 0 | 0 | 1 | 1 | 0 | 1 |

 

Обратный код целого числа. Обратный код целого положитель­ного числа совпадает с его прямым кодом. Для отрицательного чис­ла обратный код строится заменой каждого незнакового байта его представления в прямом коде на противоположный (заменим 1 на 0, 0 на 1), знаковый разряд не изменяется.

Число Прямой код Обратный код Замечание
+11011 0,0011011 0,0011011 Число положительное, обратный и прямой коды совпадают
-11011 1,0011011 1,1100100 Число отрицательное, каждый байт, кроме знакового, изменен на противоположный

Пример.

 

Дополнительный код целого числа. Дополнительный код положи­тельного числа совпадает с его прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.

Пример.

Число Прямой код Обратный код Дополнительный код
+ 1110 0,0001110 0,0001110 0,0001110
-1110 1,0001110 1,1110001 1,1110010

 

Задание 2. Переведите числа X и Y в прямой, обратный и допол­нительный коды. Выполните сложение в обратном и дополнитель­ном кодах. Результат переведите в прямой код. Полученный резуль­тат проверьте, используя правила двоичной арифметики.

 

а) X = -11010; б) X =-11101; в) X =111010;

Y= 100111; Y = -10011; Y = -101111;

 

г) Х = -101110; д) Х= 1101011; е) X =-11011;

Y = -11101; Y = -1001110; Y =-10111.

 

Методические указания.

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

При сложении чисел в дополнительном коде возникающая едини­ца переноса в знаковом разряде отбрасывается.

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

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

 

Пример.

Сложить X и Y в обратном и дополнительном кодах:

а) Х= 1111 и Y= -101.

Сложим числа, пользуясь:

правилами двоичной арифметики обратным кодом дополнительным кодом
Х= 1111 Y= -101 Х+Y = 1010 Хобр = 0,0001111 Yобр = 1,1111010 10,0001001 I- ------->+1 (Хобр+ Yобр) =0,0001010 Хдоп= 0,0001111 Yдоп = 1,1111011 Единица переноса 1 0,0001010 отбрасывается (X+Y) доп = 0,0001010
  Так как результат сложения является кодом положительного чис­ла (знаку плюс (+) соответствует 0 в знаковом разряде), то (X + Y) обр=(X + Y)доп = (X + Y)пр.   б) X =-101, Y =-111. Сложим числа, пользуясь:
правилами двоичной арифметики обратным кодом дополнительным кодом
Х= - 101 Y = -111 X+Y= -1100 Хобр= 1,1111010 Yобр = 1,1111000 1 1,1110010 I--------> +1 (X+Y) обр = 1,1110011 Хдоп= 1,1111011 Yдоп = 1.1111001 Единица переноса 1 1,1110100 отбрасывается (X+Y) доп = 1,1110100

 

Так как сумма является кодом отрицательного числа (знак 1), то необходимо перевести результаты в прямой код:

• из обратного кода: (X+Y) обр = 1,1110011=> (X + Y) пр = 1,0001100;

• из дополнительного кода: (X+Y) доп = 1,1110100=> (X + Y) пр =

= 1,0001011 + 0,0000001, (Х + Y) пр = 1,0001100.

Получили X + Y = -1100, результат совпадает с суммой, полу­ченной по правилам двоичной арифметики.

 

Задание 3. Сложите числа X и Y в модифицированном обратном и модифицированном дополнительном восьмиразрядных кодах. При обнаружении переполнения увеличьте число разрядов в кодах и по­вторите суммирование. Результат переведите в прямой код. Получен­ный результат проверьте, используя правила двоичной арифметики:

 

а) Х= 1101101; б) Х= 111101; в) Х= -111010;

Y= 110101; Y =-111001; Y= -1100111;

 

г) Х= -11001; д) Х= -10101; e) X =-1101;

Y =-100011; Y = 111010; Y = -111011.

 

Методические указания.

Модифицированные обратный и дополнительный коды

Переполнение разрядной сетки может привести к переносу еди­ницы в знаковый разряд, что приведет к неправильному результату. Положительное число, получившееся в результате арифметической операции, может восприниматься как отрицательное, так как в зна­ковом разряде появится «1», и наоборот.

Например:

Х = 0,1011110

Y = 0.1101100

X + Y = 1,1001010

Х и Y — коды положительных чисел, но в процессе сложения в знаковом разряде появилась «1», что означает код отрицательного числа. Чтобы распознать переполнение разрядной сетки, вводятся модифицированные коды.

 

Модифицированный обратный код характеризуется тем, что под знак числа отводится не один, а два разряда. Форма записи чисел в модифицированном обратном коде выглядит следующим образом:

• для положительного числа

Х = Хп Хп-1... Х2 Х1 Х0... => Xмодобр = 00,ХпХп-1...Х2Х1Х0;

• для отрицательного числа

Х = Хп Хп-1... Х2 Х1 Х0... => Xмодобр = 00,ХпХп-1...Х2Х1Х0;

(X — обозначение логической операции отрицания «не X», если

Х= 0, то Х =1; Х= 1, Х = 0).

В модифицированных обратном и дополнительном кодах под знак числа отводится не один, а два разряда: «00» соответствует знаку «плюс», «11» — знаку «минус». Любая другая комбинация («01» или «10»), получив­шаяся в знаковых разрядах, является признаком переполнения разряд­ной сетки. Сложение чисел в модифицированных кодах ничем, не от­личается от сложения в обычных обратном и дополнительном кодах.

 

Пример.

Даны два числа: Х= 101001 и Y = -11010. Сложить их в допол­нительном и модифицированном дополнительном кодах.

Обычная запись Х = + 0101011 Y = -0011110
Обратный код Xобр =0,0101011 Yобр =1,1100001
Модифицированный обратный код Xмодобр =00,101011   Xмодобр = 11,100001
Дополнительный код Xдоп = 0,0101011 Xдоп = 1.1100010
Модифицированный дополнительный код Xмоддоп =00.101011 Xмодобр =11,100010  

 

Выполним сложение:

Дополнительный код Модифицированный дополнительный код
Xдоп = 0,0101011 Yдоп = 1,1100010 Единица переноса 1 0,0001101 отбрасывается (X+Y) доп = 0,0001101 Xмоддоп =00,0101011 Yмоддоп = 11,1100010 Единица переноса 1 00,0001101 отбрасывается (X+Y)мод доп= 00,001101

 

 

Переполнение не наблюдается (в знаковых разрядах «00»). Ре­зультаты, полученные в обычном и модифицированном кодах, совпа­дают (Х+Y = 1101).

 

 

Задания для самостоятельной работы

1. Запишите числа X и Y в прямом, обратном и дополнительном кодах. Выполните сложение в обратном и дополнительном ко­дах. Результат переведите в прямой код. Полученный результат проверьте, используя правила двоичной арифметики.

2. Измените число Y, добавив в конец числа две единицы «11». Сло­жите полученные числа в модифицированном обратном и моди­фицированном дополнительном кодах. Результат переведите в прямой код. Выполните проверку сложения, используя правила двоичной арифметики.

Вариант Числа X и Y Вариант Числа X и Y
1. Х =-100101 Y = 11101 2. Х=-101101 Y = 1101
3. Х=-110101 Y= 11101 4. Х=-1101111 Y = 10101
5. Х=-1000111 Y = 11101 6. Х=-1110001 Y = 10011
7. Х =-1010001 Y = 10011 8. Х=-1000011 Y = 10011
9. Х=-1101001 Y= 10111 10. Х =-1010001 Y = 1111
11. Х=-101001 Y = 10111 12. Х=-1010111 Y = 11100
13. X =-110101 Y = 1111 14. X =-101111 Y = 1101
15. Х=-110101 Y = 10011 16. Х=-1001011 Y = 10101
17. X =-100011 Y = 10011 18. Х=-1010001 Y = 1011
19. Х=-110001 Y= 10111 20. Х=-1000111 Y = 11111
21. Х=-111001 Y = 1110 22. X =-100001 Y = 1111
23. Х=-1011101 Y = 10111 24. X =-1111000 Y = 101111
25. Х=-1100000 Y= 1111 26. Х=-10101 Y = 1101

 

Контрольные вопросы

1. Что понимают под прямым кодом числа?

2. Как образуется обратный код целого положительного числа?

3. Как образуется обратный код целого отрицательного числа?

4. Каков алгоритм сложения чисел в прямом коде?

5. Каков алгоритм сложения чисел в обратном коде?

6. Чем характеризуется модифицированный обратный код?


[I] В примерах этой лабораторной работы запятая отделяет знаковый разряд от числа.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: