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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
ЛАБОРАТОРНА РОБОТА №2
Тема: Переведення чисел. Доповнювальний, прямий і зворотній код. Операції над цілими числами у двійковій системі числення.
ТЕОРЕТИЧНІ ПОЛОЖЕННЯ
1. Операції над цілими числами у двійковій системі числення. Доповнювальний, прямий і зворотній код.
Правила виконання арифметичних дій над двійковими числами задаються таблицею1. Правила арифметики в усіх позиційних системах аналогічні.
Таблиця 1. - Правила виконання арифметичних дій над двійковими числами
Двійкове додавання |
Двійкове віднімання |
Двійкове множення |
0+0=0 0+1=1 1+0=1 1+1=10 |
0-0=0 1-0=1 1-1=0 10-1=1 |
0*0=0 0*1=0 1*0=0 1*1=1 |
Додавання двох чисел в двійковій системі можна виконувати стовпцем, складаючи або дві цифри молодшого розряду, або дві цифри чисел, які додаються, в даному розряді і одиниці перенесення з сусіднього молодшого розряду.
Наприклад,
1111101
+ 101101.01
11011.01
-------------------
1001000.10
Числа в двійковій системі віднімаються аналогічно числам в десятковій системі. При відніманні чисел в даному розряді, якщо цифра, що зменшується, менше цифри числа, що віднімається, позичають одиницю з наступного старшого розряду. При цьому одиниця, що позичається із старшого розряду, рівна двом одиницям даного розряду.
Наприклад,
10101.11
- 1011.01
---------------
1010.10
При здійсненні обчислень, звичайно, доводиться мати справу не тільки з цілими невідємними числами, але також з відємними.
У програмуванні виділяють два типи чисел: беззнакові та знакові. Всі беззнакові числа вважаються невідємними, і всі їх розряди використовуються для задання абсолютної величини числа. Так, за допомогою одного байту можна закодувати цілі беззнакові числа від 0 до 255.
Для представлення ж відємних чисел слід виділити один біт для знаку. Як правило, це старший біт. Якщо один біт в числі виділяється під його знак, таке число називається знаковим. Як правило, 0 у старшому (крайньому зліва) біті відповідає додатнім числам, а 1 - відємним.
Представлення відємних чисел залежить від кількості байтів, яка відводиться на число. Для визначеності будемо розглядати однобайтові знакові числа.
Виділяють три основних способи представлення відємних чисел:
Приклад. Розглянемо число -3. Двійковим еквівалентом відповідного додатного числа 3 є 00000011.
Прямий код. Встановимо знаковий біт в 1 (нагадаємо, що 1 в старшому біті знакового числа сигналізує про його відємність). Всі інші біти залишаються без змін. В результаті вийде 10000011.
Обернений код. Замінимо кожний біт на протилежний (1 на 0; 0 на 1); результатом буде 11111100.
Додатковий код. Додамо 1 до оберненого коду; в результаті вийде 11111101. Зверніть увагу, що якщо розглядати послідовність 11111101 як беззнакове, а не як знакове число, вона інтерпретується як додатнє число 253.
Приклад 1. Числа А, А, С и С представити в прямому, оберненму (зворотньому), доповнюваному кодах.
А = 30710 = 1001100112 С = 9110 = 10110112
[A]пр = [A]об = [A]дк = 0|000000100110011
[A]пр = 1|000000100110011
[A]об = 1|111111011001100
[A]дк = 1|111111011001100+1 = 1|111111011001101
[C]пр = [C]об = [C]дк = 0|000000001011011
[C]пр = 1|000000001011011
[C]об = 1|111111110100100
[C]дк = 1|111111110100100+1 = 1|111111110100101
Приклад 2. Обчислити: А + B, A B, A B. Нехай А=16010, B=4510.
[A]дк = 0|000000010100000
[A]дк = 1|111111101100000
[B]дк = 0|000000000101101
[B]дк = 1|111111111010011
А + B |
A B |
A B |
|||||
+ |
0|000000010100000 |
+ |
0|000000010100000 |
+ |
1|111111101100000 |
||
0|000000000101101 |
1|111111111010011 |
1|111111111010011 |
|||||
0|000000011001101 |
0|000000001110011 |
1|111111100110011 |
Приклад 3. Виконати додавання чисел, представленних в машинних кодах: A+C; A+C; A+( C); A+( C).
A = 30710 =1001100112 С = 9110 = 10110112
[A]дк = 0|000000100110011
[A]дк = 1|111111011001101
[C]дк = 0|000000001011011
[C]дк = 1|111111110100101
А + C |
A + C |
|||
+ |
0|000000100110011 |
+ |
1|111111011001101 |
|
0|000000001011011 |
0|000000001011011 |
|||
0|000000110001110 |
1|111111100101000 |
|||
А + ( C) |
A + ( C) |
|||
+ |
0|000000100110011 |
+ |
1|111111011001101 |
|
1|111111110100101 |
1|111111110100101 |
|||
0|000000011011000 |
1|111111001110010 |
Зауваження. В ЕОМ операції віднімання, множення, ділення здійснюються за допомогою операції додавання. Наприклад, при відніманні від'ємник записується у доповняльному коді і віднімання заміняється додаванням.
Приклад 4: 23 + 22 = 45
Приклад 5: 23 - 13 = 23 + (-13 ) = 10
(-13)10 = (1 0001101)пр. = (1 1110010)об. = (1 1110011)доп.
Приклад 6: 7 - 13 = 7 + (-13) = -6
Оскільки результат від'ємний (біт знаку містить одиницю), то він представлений у доповняльному коді. Для перевірки правильності виконання операції потрібно перейти до прямого коду, який визначає абсолютне значення результату. Для цього потрібно:
1. відняти від доповняльного кода 1: 11111010дк. - 00000001 = 11111001об.
2. проінвертувати обернений код для переходу до прямого: 10000110пр.
Приклад 7: (- 7 13) = (-7) +(-13) = -20
(-7)10 Прямий код: 1 0000111 Обернений код: 1 1111000 Доповняльний код: 1 1111001 |
(-13)10 Прямий код: 1 0001101 Обернений код: 1 1110010 Доповняльний код: 1 1110011 |
1 0010100пр. - прямий двійковий код числа ( -20 )10
Кількість логічних операцій може бути обчислено за формулою , де n число змінних. Із формули видно, що для двох змінних a і b логічних операцій 16. Основні із них: логічне додавання, логічне множення, логічне не, додавання по модулю 2.
Для виконання логічних операцій, використовують таблиці істинності:
Логічне додавання a b |
Логічне множення a & b |
Логічне не |
Додавання по модулю a b |
||||||||||
a \ b |
1 |
0 |
a \ b |
1 |
0 |
a |
a \ b |
1 |
0 |
||||
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|||
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
Приклади:
а) виконати логічне додавання чисел А і С:
|
0|000000100110011 |
0|000000001011011 |
|
0|000000101111011 |
б) виконати логічне множення чисел А і С:
& |
0|000000100110011 |
0|000000001011011 |
|
0|000000000010011 |
в) виконати логічне додавання А і С по модулю 2.
|
0|000000100110011 |
0|000000001011011 |
|
0|000000101101000 |
г) виконати логічний зсув: вліво для чисел А і А, вправо для С і С
A |
A |
||
0|000000100110011 |
1|111111011001101 |
Число |
|
0|000001001100110 |
1|111110110011010 |
Результат зсуву вліво |
C |
C |
||
0|000000001011011 |
1|111111110100101 |
Число |
|
0|000000000101101 |
0|111111111010010 |
Результат зсуву вправо |
д) виконати логічний циклічний зсув: вліво для чисел А і А, вправо для чисел С і С
A |
A |
||
0|000000100110011 |
1|111111011001101 |
Число |
|
0|000010011001100 |
1|111101100110100 |
Результат зсуву вліво на 2 біта |
C |
C |
||
0|000000001011011 |
1|111111110100101 |
Число |
|
0|000000000010110 |
0|011111111101001 |
Результат зсуву вправо на 2 біта |
e) виконати арифметичний зсув: вліво для чисел А і А, вправо для чисел С і С
A |
A |
||
0|000000100110011 |
1|111111011001101 |
Число |
|
0|000001001100110 |
1|111110110011010 |
Результат зсуву вліво |
|
C |
C |
||
0|000000001011011 |
1|111111110100101 |
Число |
|
0|000000000101101 |
1|011111111010010 |
Результат зсуву вправо |
КОНТРОЛЬНІ ЗАПИТАННЯ
ЗАВДАННЯ
Завдання1. Записати в прямому коді наступні числа(n=8):
Варіант |
1 |
2 |
3 |
4 |
5 |
Дані |
10101 |
10011 |
100001 |
-00101 |
1101 |
Варіант |
6 |
7 |
8 |
9 |
10 |
Дані |
-1011101 |
-1011001 |
1001 |
0101 |
-101010 |
Варіант |
11 |
12 |
13 |
14 |
15 |
Дані |
100101 |
1010 |
-1011 |
-1101 |
101001 |
Варіант |
16 |
17 |
18 |
19 |
20 |
Дані |
-10101 |
10011 |
10101 |
-11011101 |
101111 |
Варіант |
21 |
22 |
23 |
24 |
25 |
Дані |
-101101 |
1000 |
1011010 |
1010001 |
011101 |
Варіант |
26 |
27 |
28 |
29 |
30 |
Дані |
-1001001 |
-100111 |
1011101 |
1010101 |
1101010 |
Завдання 2. Записати в доповнювальному коді наступні числа (n=8):
Варіант |
1 |
2 |
3 |
4 |
5 |
Дані |
101011 |
-011011 |
101101 |
-101001 |
-1011000 |
Варіант |
6 |
7 |
8 |
9 |
10 |
Дані |
-100001 |
-1011111 |
1101 |
-1011101 |
1011101 |
Варіант |
11 |
12 |
13 |
14 |
15 |
Дані |
-101101 |
101101 |
101011 |
-11011 |
-101010 |
Варіант |
16 |
17 |
18 |
19 |
20 |
Дані |
101010 |
-101111 |
-100111 |
1010 |
1011101 |
Варіант |
21 |
22 |
23 |
24 |
25 |
Дані |
1011 |
-1101 |
110111 |
-1010 |
-10111 |
Варіант |
26 |
27 |
28 |
29 |
30 |
Дані |
10001 |
100001 |
1010101 |
1101111 |
1010101 |
Завдання 3. Зобразити у зворотньому і доповнювальному кодах відємні числа (n=8):
Варіант |
1 |
2 |
3 |
4 |
5 |
Дані |
-1000 |
-11111 |
-1011 |
-1101 |
-1001 |
Варіант |
6 |
7 |
8 |
9 |
10 |
Дані |
-1010 |
-0101 |
-0111 |
-1110 |
-1111 |
Варіант |
11 |
12 |
13 |
14 |
15 |
Дані |
-10111 |
-10011 |
-11011 |
-11101 |
-10001 |
Варіант |
16 |
17 |
18 |
19 |
20 |
Дані |
-11110 |
-11101 |
-1100 |
-10101 |
-11001 |
Варіант |
21 |
22 |
23 |
24 |
25 |
Дані |
-11100 |
-111011 |
-01011 |
-01110 |
-10011 |
Варіант |
26 |
27 |
28 |
29 |
30 |
Дані |
-110111 |
-100011 |
-10100 |
-1011110 |
-101010 |
Завдання 4. Скориставшись доповнювальними кодами чисел, розрахувати S=A+B (n=8):
Варіант |
1 |
2 |
3 |
4 |
5 |
дані A= B= |
1011010 -1010001 |
-1011010 1010001 |
101010 -101101 |
-1010 1000 |
1011010 -1001001 |
Варіант |
6 |
7 |
8 |
9 |
10 |
дані A= B= |
1001 -1101 |
1010 -1101 |
10101 -10011 |
-101010 101110 |
-1011010 101101 |
Варіант |
11 |
12 |
13 |
14 |
15 |
дані A= B= |
1011011 -1001011 |
1010 -1111 |
1011101 -1001010 |
10100 -10111 |
-1011011 1011010 |
Варіант |
16 |
17 |
18 |
19 |
20 |
дані A = B= |
1011 -1101 |
1001 -1010 |
-10101 10011 |
101010 -101101 |
-1011001 1011010 |
Варіант |
21 |
22 |
23 |
24 |
25 |
дані A= B= |
-1010 1111 |
-1011101 1001010 |
10110111 -1011010 |
-1011 1010 |
-1011 1101 |
Варіант |
26 |
27 |
28 |
29 |
30 |
дані A= B= |
100101 -101110 |
-10100 10111 |
1011011 -1010001 |
-1010001 1011111 |
-10101 10001 |
Завдання 5. Скориставшись доповнювальними кодами чисел, розрахувати R=A-B (n=8), якщо:
Варіант |
1 |
2 |
3 |
4 |
5 |
дані A = B= |
111101 101011 |
-100101 01010 |
-101001 -100111 |
11010101 10101010 |
1010101 1101010 |
Варіант |
6 |
7 |
8 |
9 |
10 |
дані A = B= |
1011 1001 |
10101 1000 |
-100110 101100 |
11011 10011 |
101111 100011 |
Варіант |
11 |
12 |
13 |
14 |
15 |
дані A = B= |
-101101 100101 |
-101100 100101 |
1010101 -1001011 |
1001 -1101 |
-100111 100110 |
Варіант |
16 |
17 |
18 |
19 |
20 |
дані A = B= |
10111 -10101 |
101001 -101100 |
1111 1101 |
1011 -1000 |
-1001011 1010001 |
Варіант |
21 |
22 |
23 |
24 |
25 |
дані A = B= |
1011101 1010100 |
-101010 101111 |
-1001110 -1010001 |
1001010 1000110 |
11111 101100 |
Варіант |
26 |
27 |
28 |
29 |
30 |
дані A = B= |
110001 101111 |
1010 1111 |
100110 -101101 |
-11011 10011 |
-1011111 1000111 |
PAGE 6