1-е число

advertisement
Государственное образовательное учреждение высшего профессионального образования
Сибирский государственный университет телекоммуникаций и информатики
Колледж телекоммуникаций и информатики
Расчетно-графическое задание №2
(Вычислительная техника)
Представление информации в ЭВМ
Выполнил студент
Группа
Проверил
Новосибирск 2010
Иванов В. С.
ЗАДАНИЕ
1. Записать без пробелов свои ФамилиюИмяОтчество.
2. Взять любые 8 символов из этой последовательности. Вместо каждого
символа записать его младшую цифру ASCII-кода. Разбить на две части по 4
цифры в каждой. Полученные H-коды рассматривать как два четырехбайтных
числа в шестнадцатеричной системе счисления.
3. Определить числовые значения исходных шестнадцатеричных чисел
(перевести исходные числа в десятичную систему счисления). Пояснить
процедуру перевода.
4. Записать двоичное представление исходных (шестнадцатеричных) чисел
(перевести их в двоичную систему счисления). Пояснить процедуру перехода.
5. Для последующих арифметических операций образовать из исходных
чисел двоичные числа а1 и а2 с нулевым старшим битом (если старший бит в
исходном числе равен единице, то его заменить на нуль!).
6. Выполнить действия сложения (вычитания) двоичных а1 и а2 чисел в
дополнительном коде при всех возможных сочетаниях знаков слагаемых.
Проверить правильность результатов. Объяснить несоответствия, если имеются.
7. Записать значения положительных и отрицательных десятичных чисел а1 и
а2 в упакованном и неупакованном форматах. Показать размещение в памяти
ЭВМ.
8. Двоичные числа а1 и а2 представить как числа с плавающей запятой,
записанные в базовом формате одиночной длины.
9. Вычислить сумму чисел А1= а1 /10 и А2 =а2 /100 с плавающей запятой. Дать
необходимые пояснения по правилам и последовательности вычислений.
2
Пример выполнения
1.
Запишем
свою
ОсиповПетрОлегович.
Фамилию
Имя
Отчество
без
пробелов:
2. Возьмём первые 16 символов из этой последовательности и получим
следующую последовательность символов: ОсиповПетрОлегов. Вместо каждого
символа запишем его младшую цифру ASCII-кода:
Осипо вПетрОле г ов
E18FE2F520E853E2
Разобьем получившуюся последовательность на две части по 4 цифры в
каждой:
E18F
E2F5
Будем рассматривать получившиеся H-коды как два четырех байтных числа
в шестнадцатеричной системе счисления.
1-е число: E 1 8 F
2-е число: E 2 F 5
3. Переведем данные числа в десятеричную систему счисления по формуле
7
a p ,
i
i
где p – основание исходной системы счисления, в нашем случае мы
i=0
переводим из шестнадцатеричной системы счисления
исходного числа.
т.е. р=16, ai – цифра
Переведём первое число:
E18F16 = 15*160 + 8*161 + 1*162 + 14*163 = 5734410
Переведём второе число:
E2F516 = 5*160 + 15*161 + 2*162 + 14*163 =1714110
4. Переведем полученные шестнадцатеричные числа в двоичную систему
счисления, сопоставив каждой цифре H-кода 4 цифры двоичного кода.
Переведём первое число:
F16 = 11112; 816 = 10002;116 = 00012; E16 = 11102
Получаем E18F16 = 11100001100011112
Переведём второе число:
516 = 01012; F16 = 11112; 216 = 00102; E16 = 11102
Получаем E2F516 = 11100010111101012
3
5. Для последующих арифметических операций образуем из исходных чисел
двоичные числа с нулевым старшим битом. Заменим в исходном первом числе
старший бит на нуль, а второе число оставим без изменений. Переведя числа
получим:
Первое число а1 = 01100001100011112
Второе число а2 = 01100010111101012
6.
Выполним
действия
сложения
(вычитания)
двоичных
(шестнадцатеричных) чисел в дополнительном коде при всех возможных
сочетаниях знаков слагаемых, для этого представим числа +а1,+а2,–а1,–а2 в
дополнительный коде, используя правило:
А, если число положительное
Aдоп
=
Аобр+1, если число отрицательное
После перевода получим представление чисел в дополнительном коде:
+а1 = 0 1100001100011112
+а2 = 0 1100010111101012
Выполним действие а1+а2:
0 110000110001111 2
+
0 110001011110101 2
_______________________________________
1 1100010010000100 2
При сложении двух положительных чисел сумма - отрицательное число (в
знаковом разряде 1).
Мы получили неверный результат при сложении в дополнительном коде. Это
произошло из-за переполнения разрядной сетки АЛУ, возникшего при
выполнении действия а1+а2 в дополнительном коде. Чтобы избежать
переполнения, нужно каждое из положительных чисел +а1 и +а2 дополнить
четырьмя нулями слева, т.е.
а1 =0 00000110000110001111 2
+
а2 =0 00000110001011110101 2
____________________________________________
0 00001100010010000100 2
4
Проверим правильность полученных результатов, выполнив действия
сложения чисел а1 и а2 в десятичной системе счисления:
а1 = 2497510
а2 = 2533310
Выполним действие а1+а2 = 24975 + 25333 = 50308.
Результат переведём в двоичную систему счисления и запишем его в
дополнительном коде:
5039810 =0 00001100010010000100 2
Данный результат сложения чисел +а1 и +а2 в дополнительном коде совпал
с результатом сложения этих же чисел в десятичной системе счисления,
произведённым выше.
После корректировки разрядности АЛУ получаем представление чисел в
дополнительном коде:
+а1
+а2
–a1
–a2
=
=
=
=
0
0
1
1
00000110000110001111 2
00000110001011110101 2
11111001111001110001 2
11111001110100001011 2
Выполним действие а1–а2= а1+(–а2):
0 00000110000110001111 2
+
1 11111001110100001011 2
_______________________________________
1 11111111111010011010 2
Проверим правильность полученного результата, выполнив действия
сложения чисел а1 и – а2 в десятичной системе счисления.
Выполним действие а1–а2 = 2497510 – 2533310 = -- 35810.
Результат переведём в двоичную систему счисления и запишем его в
дополнительном коде:
-35810 =1 000000000001011001102
Аобр = 111111111110100110012
+
1
----------------------------Адоп = 1 111111111110100110102
5
Данный результат совпал с дополнительным кодом разности чисел +а1–а2,
полученным раннее.
Знаковый разряд (1) указывает на то, что результат вычитания
отрицательный.
Выполним действие а2–а1 = а2+(–а1):
0 00000110001011110101 2
+
1 11111001111001110001 2
_______________________________________
0 00000000000101100110 2
Проверим правильность полученного результата, выполнив сложения чисел
а2 – а1 в десятичной системе счисления.
Выполним действие -а1+а2 = -2497510 + 2533310 = + 35810
Результат переведём в двоичную систему счисления и запишем его в
дополнительном коде:
+ 35810 = 0 101100110 2
Данный результат совпал с дополнительным кодом разности чисел +а2–а1,
полученным раннее.
Выполним действие –а1–а2 = –а1+(–а2):
1 11111001111001110001 2
+
1 11111001110100001011 2
_______________________________________
(1)1 11110011101101111100 2
Проверим правильность полученного результата, выполнив действия
сложения чисел – а2 и – а1 в десятичной системе счисления/
Выполним действие –а2–а1= -2497510 - 2533310 = – 5030810.
Результат переведём в двоичную систему счисления и запишем его в
дополнительном коде:
–50308 1 0 = 1 00001100010010000100 2
Aобр
11110011101101111011 2
1
А доп
1 11110011101101111100 2
6
Результат сложения чисел –а1 и –а2 в дополнительном коде совпал с
дополнительным кодом суммы этих же чисел в десятеричной системе счисления,
произведённым выше.
7. Записать значения положительных и отрицательных десятичных чисел а1
= 2497510 , а2 = 2533310 , - а1 = - 2497510 , - а2 = - 2533310 в упакованном и
неупакованном форматах.
Показать размещение чисел в памяти ЭВМ.
Упакованный формат:
Число +а1 в упакованном формате выглядит следующим образом:
1100
0010
0100
1001
0111
0101
Число +а2 в упакованном формате выглядит следующим образом:
1100
0010
0101
0011
0011
0011
где старшая тетрада старшего байта- 11002 = С16– знак плюс, остальные тетрады –
цифры числа.
Число –а1 в упакованном формате выглядит следующим образом:
1101 0010
0100
1001
0111 0101
Число –а2 в упакованном формате выглядит следующим образом:
1101
0010
0101
0011
0011
0011
где старшая тетрада старшего байта 11012 = D16– знак минус, остальные тетрады –
цифры числа.
Покажем размещение чисел в памяти ЭВМ:
addr
00
01
02
03
04
05
06
07
08
09
0A
0B
data
1100 0010
0101 0011
0011 0011
1100 0010
0100 1001
0111 0101
1100 0010
0101 0011
0011 0011
1100 0010
0100 1001
0111 0101
7
Неупакованный формат:
Число +а1 в неупакованном формате выглядит следующим образом:
2В
32
34
39
37
35
где байт 2В – знак плюс. Остальные байты – цифры.
Число +а2 в неупакованном формате выглядит следующим образом:
2B
32
35
33
33
33
где байт 2В – знак плюс, остальные байты – цифры.
Число +а1 в неупакованном формате выглядит следующим образом:
2D
32
34
39
37
35
где байт 2D – знак минус, остальные байты – цифры.
Число +а2 в неупакованном формате выглядит следующим образом:
2D
32
35
33
33
33
где байт 2D – знак минус, остальные байты – цифры.
Покажем размещение чисел в памяти ЭВМ:
addr
00
01
02
03
04
05
06
07
08
09
0A
0B
data
0010
1011
0011
0010
0011
0100
0011
1001
0011
0111
0011
0101
0010
1011
0011
0010
0011
0101
0011
0011
0011
0011
0011
0011
addr
0C
0D
0E
0F
10
11
12
13
14
15
16
17
data
0010
1101
0011
0010
0011
0100
0011
1001
0011
0111
0011
0101
0010
1101
0011
0010
0011
0101
0011
0011
0011
0011
0011
0011
8. Двоичные числа А1 (-А1) и А2 (–А2) представить как числа с плавающей
запятой.
Представим число А1 = 2497,510 в форме числа с плавающей запятой:

Перевеем модуль числа в двоичную систему счисления;
8
249710 =100111000001 2
0,5 1 0 =0,1 2
2497,510 =100111000001,1 2
 Запишем полученное двоичное число в нормализованном виде;
100111000001,1 2 =0,1001110000011 2 *10 2 1 1 0 0 2
 Определим машинный порядок с учетом смещения;
Mq =1100+10000000=1001100
 Учитывая знак заданного числа (0 – положительное; 1
отрицательное),
запишем его представление в памяти ЭВМ:
01001100
10011
–
10000011
Для того чтобы получить внутренне представление отрицательного числа - А1
достаточно в полученном выше представлении заменить в разряде знака числа 0
на 1.
11001100
10011
10000011
Представим число А2 =253.33 и (-А2) в форме числа с плавающей запятой:

Перевеем модуль числа в двоичную систему счисления;
А2 = 25310 =11111101.010011012
0,33 1 0 =0, 010011012
253,3310 =11111101.010011012
 Запишем полученное двоичное число в нормализованном виде;
253,3310 =11111101.010011012 =0,1111110101001101*10210002
 Определим машинный порядок с учетом смещения;
Mq =1000+10001000=1001000
 Учитывая знак заданного числа (0 – положительное; 1
отрицательное),
запишем его представление в памяти ЭВМ:
01001000
11111101
01001101
Для того чтобы получить внутренне представление отрицательного числа-А2
достаточно в полученном выше представлении заменить в разряде знака числа 0
на 1.
11001000
11111101
9
01 001101
–
9. Вычислить сумму чисел А1 и А2 с плавающей запятой.
Переведем числа А1 и А2 в двоичную систему счисления. Для этого сместим
цифры мантиссы чисел на указанное в машинном порядке смещение.
Для числа А1 оно составляет 11002 =1210 порядков.
100111000001,12
Для числа А2 оно составляет 10002 =810 порядков.
111111010,10011012
Выполним сложение мантисс чисел А1и А2
100111000001,1 2
11111101,01001101 2
101010111110,11101 2
Переведем полученный результат в десятичный код
2048+512+128+32+16+8+4+2+1/2+1/4+1/8+1/64=2748,8306
Проверим полученный результат, сложив десятичные значения чисел А1и А2
п.8
А1 = 2497,510 +253,3310 =2748,8310
Результат сложения десятичного значения чисел А1и А2 совпал с полученным
при сложении этих чисел в двоичном коде.
10
Download