
- •Министерство образования и науки российской федерации федеральное агенство по образованию
- •«Санкт-петербургский государственный университет аэрокосмического приборостроения»
- •190000, Санкт-Петербург, ул.Б.Морская, 67
- •Цели и общая характеристика учебной дисциплины
- •Программа учебной дисциплины
- •Основная литература
- •Дополнительная литература
- •Методические указания по изучению курса и контрольные вопросы
- •4. Контрольное задание Представление числовых данных в цвм
- •5. Методические указания по выполнению контрольного задания Системы счисления
- •Перевод чисел из одной системы счисления в другую Перевод чисел из восьмеричной и шестнадцатеричной систем в двоичную и обратно
- •Перевод чисел в десятичную систему
- •Перевод чисел из десятичной системы в другие
- •Представление целых чисел в эвм
- •Представление целых чисел в эвм
- •Переполнение при выполнении операции сложения целых чисел со знаком в эвм
- •6. Пример выполнения контрольного задания
- •7. Примерный перечень экзаменационных вопросов
- •Цели и общая характеристика учебной дисциплины .................................. 3
Переполнение при выполнении операции сложения целых чисел со знаком в эвм
Переполнением называется выход результата выполнения арифметической операции из допустимого диапазона представления чисел. В двоичной системе при выполнении операции сложения чисел со знаком переполнение может возникнуть в двух случаях:
-
если слагаемые положительны, а их сумма – отрицательна;
-
если слагаемые отрицательны, а их сумма – положительна. При сложении чисел с разным знаком переполнение возникнуть не может.
Пример. n = 4. Диапазон представления от -8 до +7.
0111 (+7)
+ 0110 (+6)
1101 (-3). Правильный
результат сложения - +13 выходит за
допустимый диапазон представления
чисел, и поэтому фиксируется арифметическое
переполнение.
6. Пример выполнения контрольного задания
Выполнение задания рассмотрим на конкретном примере, предположив, что предпоследней цифре шифра соответствует число A1 = 90 (10), а последней – число A2 = 33 (10).
Для выполнения задания необходимо выполнить следующую последовательность действий:
-
Cформировать число W в десятичной системе. W = 90,33 (10).
-
Для перевода числа W в другие системы необходимо воспользоваться отдельно правилами перевода целой и дробной части числа (число A1 – целое, а число A2 – дробное).
-
Перевод в двоичную систему.
-
а)
целой части
б) дробной части
90 2
0,33
90 45
2
2
0
44 22 2
0,66
1
22 11 2
2
0
10 5 2
1,32
1
4 2 2
2
1
2 1
0,64
0
2
1,28
2
0,56
2
1,12
W =1011010,010101 (2). Проверим правильность перевода:
+
(10).
-
Перевод в восьмеричную систему.
а) целой части б) дробной части
90 8
0,33
88 11 8 8
2
8 1
2,64
3
8
5,12
W =132,25 (8). Проверим правильность перевода:
(10).
-
Перевод в шестнадцатеричную систему.
а) целой части б) дробной части
90 16
0,33
80 5 16
10
5,28
16
4,48
W =5A,54 (16). Проверим правильность перевода:
(10).
Заметим, что дробная часть исходного числа и дробная часть, получаемая при переводе в десятичную систему из двоичной, восьмеричной и шестнадцатеричной систем отличается на 0,001875, что обусловлено заданной точностью перевода.
Поскольку двоичная система связана с восьмеричной и шестнадцатеричной специальными соотношениями (8 = 23,16 = 24), то выполнив перевод из десятичной системы в двоичную, можно выполнить перевод в восьмеричную систему (разбивая двоичное число на триады) и в шестнадцатеричную систему (разбивая число на тетрады).
W
= 0 0 1 0 1 1 0 1 0 , 0 1 0 1 0 1 (2)
1 3 2 , 2 5 (8)
W
= 0 1 0 1 1 0 1 0 , 0 1 0 1 0 1 0 0 (2)
5 A , 5 4 (16).
-
Представим числа в дополнительном коде.
3.1 Для двоичной системы
A1 = 1011010 (2). + A1 = 0 | 1011010.
- A1 = 1 | 0100101 (инвертируем разряды)
+ 1 (добавляем 1 к младшему разряду)
1
| 0100110.
Переведем целое число A2 в двоичную, восьмеричную и шестнадцатиричную системы счисления (также как мы переводили число A1) .
A2 = 33 (10) = 100001 (2) = 41 (8) = 21 (16).
Так как число A2 меньше числа A1, а операции над числами выполняются в фиксированном формате, то в качестве базового выбираем формат, имеющий число разрядов, необходимое для представления числа A1, а в старшую часть числа A2 для выравнивания добавляем незначащие нули, если это необходимо.
A2 = 0100001 (2). + A2 = 0 | 0100001.
- A2 = 1 | 1011110 (инвертируем разряды)
+ 1 (добавляем 1 к младшему разряду)
1
| 1011111.
В этом примере для представления чисел в двоичной системе счисления требуется 8 двоичных разрядов, включая знаковый разряд, т.е. можно сказать, что используется формат байта.
Следовательно, в восьмеричной системе для представления чисел потребуется три разряда, а в шестнадцатеричной – два.
3.2 Для восьмеричной системы:
A1 = 132 (8). + A1 = 132.
- A1 = 645 (заменяем цифры на взаимно обратные)
+ 1 (добавляем 1 к младшему разряду)
646.
A2 = 41 (8). + A2 = 041.
- A2 = 736 (заменяем цифры на взаимно обратные)
+ 1 (добавляем 1 к младшему разряду)
737.
3.3 Для шестнадцатиричной системы:
A1 = 5A (16). +A1 = 5A.
- A1 = A5 (заменяем цифры на взаимно обратные)
+ 1 (добавляем 1 к младшему разряду)
A6.
A2 = 21 (16). + A2 = 21.
- A2 = DE (заменяем цифры на взаимно обратные)
+ 1 (добавляем 1 к младшему разряду)
DF.
-
Выполним операции сложения над числами в двоичной, восьмеричной и шестнадцатеричной системах:
-
В двоичной системе:
A1 + A2 = 0 | 1011010 -A1 – A2 = 1 | 0100110
+ 0 | 0100001 1 | 1011111
0
| 1111011 (2)
1| 0000101 (2)
A1 - A2 = 0 | 1011010 -A1 + A2 = 1 | 0100110
+ 1 | 1011111 0 | 0100001
0
| 0111001 (2)
1| 1000111 (2)
.
-
В восьмеричной системе:
A1 + A2 = 132 -A1 – A2 = 646
+ 041 737
173
(8)
605 (8)
A1 - A2 = 132 -A1 + A2 = 646
+ 737 041
071
(8)
707
(8)
.
-
В шестнадцатеричной системе:
A1 + A2 = 5A -A1 – A2 = A6
+ 21 DF
7B
(16)
85 (16)
A1 - A2 = 5A -A1 + A2 = A6
+ DF 21
3
9 (16)
C7
(16)
.
Заметим, что так как A1 + A2 = - (-A1 - A2) и A1 - A2 = - (A2 – A1), то вместо четырех действий в каждой системе можно было выполнить только два, а остальные два результата получить, используя перевод в дополнительный код. Например, для системы с основанием 16 имеем:
A1 + A2 = 7B (16) -A1 – A2 = 84
+ 1
85
(16)
.
Покажем, что для операции A1 – A2 действия во всех системах счисления приводят к одному и тому же результату, используя перевод в десятичную систему.
A1 – A2 = 90 – 33 = 57 (10).
A1
– A2 = 0111001 (2)
=
1
+ 8 + 16 + 32 = 57 (10).
A1
– A2 = 071 (8)
=
1
+ 56 = 57 (10).
A1
– A2 = 039 (16)
=
9
+ 48 = 57 (10).
-
Проверим полученные результаты на наличие арифметического переполнения.
Так как в нашем примере знаковые числа представляются в формате байта, то допустимый диапазон представления чисел в десятичной системе составляет от -128 до + 127. В рассмотренном примере при сложении чисел арифметического переполнения не возникает