Лабораторная работа № 7
.2.pdfЛАБОРАТОРНАЯ РАБОТА № 7
Формы представления чисел в ЭВМ (Часть 2)
Цель работы: научиться определять значения целых и вещественных чисел по их внутреннему представлению в компьютере.
Варианты заданий: для своего номера варианта N (номер студента по списку в журнале) – определить число YZ = N + 16, которое состоит из двух цифр Y и Z, где Z – количество единиц числа YZ, а Y – количество десятков числа YZ. Например, номер варианта задания (номер студента по списку в журнале) N = 40, тогда число YZ = 56.
Задания:
1)Сложить два числа в формате с фиксированной запятой 8 бит:
+YZ10 и –ZY10 –YZ10 и +ZY10
2)Представить число (+YZ,YZ10) в формате числа с плавающей запятой одинарной точности 32 бита.
3)Записать число в десятичной системе счисления по его внутреннему представлению в ЭВМ (в формате действительного числа с плавающей запятой одинарной точности 32 бита):
01000010011111111000000000000000
4)Перевести число 1 1YZ 000 00010 в двоичную систему счисления с помощью калькулятора (Пуск>Программы>Стандартные). Для этого переключатель «Hex Dec Oct Bin» перевести в положение «Bin», затем переключатель «8 байт 4 байта 2 байта 1 байт» перевести в положение «4 байта». После этого переключатель «Hex Dec Oct Bin» перевести в положение «Dec», ввести число для своего варианта и перевести переключатель «Hex Dec Oct Bin» в положение «Bin». Дополнить полученный результат слева одним нулем, чтобы получилось двоичное число с 32 разрядами. По полученному таким образом внутреннему представлению числа в ЭВМ в формате с плавающей запятой одинарной точности 32 бита записать число в десятичной системе счисления.
5)Ответить на контрольные вопросы к работе. Оформить отчет о лабораторной работе (форма отчета приведена ниже). Сдать напечатанный и подписанный студентом отчет на следующем занятии.
Контрольные вопросы к лабораторной работе:
1)Какие коды представления целых чисел в ЭВМ используются для упрощения схем вычитания? Что они собой представляют?
2)Каков алгоритм определения значения целого числа по его внутреннему представлению в ЭВМ?
3)Какова структура представления числа с плавающей запятой в ЭВМ?
4)Каков алгоритм определения значения вещественного числа по его внутреннему представлению в ЭВМ?
Страница 1 из 7
Министерство образования и науки Российской Федерации Южно-Уральский государственный университет Факультет «Приборостроительный»
Кафедра «Информационно-измерительная техника»
Формы представления чисел в ЭВМ
ОТЧЁТ о лабораторной работе № 7 (Часть 2)
Вариант № N
Проверил, (доцент)
_______________ /Петров П.П./
_______________ 20__ г.
Выполнил студент группы ХХ-000
_______________ /Иванов И.И./
_______________ 20__ г.
Челябинск 2013
Страница 2 из 7
Цель работы: ____________________________________________________
________________________________________________________________________
Ход работы:
Задание №__
________________________________________________________________________
________________________________________________________________________
Решение:
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Задание №__
________________________________________________________________________
________________________________________________________________________
Решение:
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Задание №__
________________________________________________________________________
________________________________________________________________________
Решение:
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Ответы на контрольные вопросы к лабораторной работе:
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Страница 3 из 7
ПРИЛОЖЕНИЕ
Справочные материалы к заданиям
1)Сложим числа (+9610 и –6910) и (–9610 и +6910) в формате с фиксированной запятой 8 бит. Сначала представим эти числа в заданном формате:
|
|
|
|
|
|
|
9610 → 110 00002 |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+9610 → |
0 |
1 |
1 |
0 |
|
0 |
0 |
0 |
|
0 |
|
Прямой код |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
|
1 |
1 |
1 |
|
1 |
|
Инверсный код |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
–9610 → |
1 |
0 |
1 |
0 |
|
0 |
0 |
0 |
|
0 |
|
Дополнительный код |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Номер бита |
|
+/– |
6 |
5 |
4 |
3 |
2 |
1 |
|
0 |
|
|
||
|
|
|
|
|
|
|
6910 → 100 01012 |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
+6910 → |
0 |
1 |
0 |
0 |
|
0 |
1 |
0 |
|
1 |
|
Прямой код |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
1 |
|
1 |
0 |
1 |
|
0 |
|
Инверсный код |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
–6910 → |
1 |
0 |
1 |
1 |
|
1 |
0 |
1 |
|
1 |
|
Дополнительный код |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Номер бита |
|
+/– |
6 |
5 |
4 |
3 |
2 |
1 |
|
0 |
|
|
||
Используя полученные коды, выполним первое сложение: |
|
|||||||||||||
+9610 → |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
|
0 |
0 |
0 |
|
0 |
|
Прямой код |
||
|
|
|
|
|
|
|||||||||
–6910 → |
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
1 |
|
1 |
0 |
1 |
|
1 |
|
Дополнительный код |
|||
|
|
|
|
|||||||||||
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
0 |
1 |
|
1 |
0 |
1 |
|
1 |
|
Прямой код |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Номер бита |
+/– |
6 |
5 |
4 |
3 |
2 |
1 |
|
0 |
|
|
Поскольку старший знаковый бит результата сложения равен 0, то это означает, что число положительное, что, в свою очередь, означает, что оно уже представлено в прямом коде, поэтому в десятичном представлении результат равен:
|
+0001 10112 → +(0·27 + 0·26 + 0·25 + 1·24 + 1·23 + 0·22 + 1·21 + 1·20) = +2710 |
|||||||||||
Используя полученные коды, выполним второе сложение: |
|
|||||||||||
–9610 |
→ |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
|
Дополнительный код |
||
|
|
|
|
|||||||||
+6910 |
→ |
+ |
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
|
Прямой код |
|||
|
|
|||||||||||
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
|
Дополнительный код |
|
|
|
|
|
|
|
|
|
|
|
||
Номер бита +/– |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Страница 4 из 7
Поскольку старший знаковый бит результата сложения равен 1, то это означает, что число отрицательное, что, в свою очередь, означает, что оно представлено в дополнительном коде, поэтому сначала необходимо получить прямой код числа:
|
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
Дополнительный код |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
Инверсный код |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
Прямой код |
|
|
|
|
|
|
|
|
|
|
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
В десятичном представлении результат равен:
–0001 10112 → –(0·27 + 0·26 + 0·25 + 1·24 + 1·23 + 0·22 + 1·21 + 1·20) = –2710
2)Представим число (+96,9610) в формате числа с плавающей запятой одинарной точности 32 бита.
Число в формате с плавающей запятой представляется в виде:
= ∙
где – число в формате с фиксированной запятой;– мантисса числа ; – порядок числа ;
– основание системы счисления, в котором представлено число .
Формат представления в ЭВМ числа с плавающей запятой одинарной точности имеет следующую структуру:
Знак |
Смещенный порядок p |
|
|
|
|
|
|
|
|
|
Мантисса m |
||||||||||||||||||||
1 бит |
|
|
|
8 бит |
|
|
|
|
|
|
|
|
|
|
23 бита |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
30 |
23 |
22 |
0 |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сначала необходимо перевести число (+96,9610) в двоичную систему счисления по правилам перевода целых и дробных чисел:
9610 → 110 00002
целая часть представляется в виде 7 двоичных разрядов. Теперь необходимо определить сколько двоичных разрядов потребуется получить при переводе дробной части заданного числа. Поскольку для представления мантиссы в формате числа с плавающей запятой одинарной точности выделено 23 бита, то в сумме целая и дробная часть переводимого числа должна иметь 24 двоичных разряда. Тогда для заданного числа необходимо получить 17 двоичных разрядов его дробной части:
0,9610 → 0,1111 0101 1100 0010 12
В результате имеем:
96,9610 → 110 0000, 1111 0101 1100 0010 12
Страница 5 из 7
Теперь необходимо нормализовать полученное двоичное число для получения его мантиссы и порядка. Нормализация числа заключается в сдвиге запятой вправо или влево до тех пор, пока в целой части результата не останется одна единица. При этом количество требуемых сдвигов запятой будет равно порядку числа, а направление сдвига покажет знак порядка (влево – «+», вправо – «–»).
110 0000, 1111 0101 1100 0010 1 = 1, 1000 0011 1101 0111 0000 101 ∙ 2
знака мантиссы
Таким образом, мантисса числа – это полученные 23 разряда после запятой нормализованного числа:
= 10000011110101110000101
бита мантиссы
Порядок числа, при этом, равен +610. Это значение необходимо представить в двоичном коде.
Поскольку для представления порядка в формате числа с плавающей запятой одинарной точности выделено 8 бит, то диапазон возможных значений порядка (с учетом того, что два нижних значения зарезервированы) составит:
(–12610…+12710)
ширина этого интервала равна 254 целых чисел.
Для того чтобы не иметь дело с дополнительными кодами при представлении отрицательных значений порядка, к значению порядка, полученного после нормализации исходного числа, прибавляют смещение равное половине ширины интервала возможных значений порядка, т.е. 12710.
Таким образом, значение смещенного порядка составит:
= 6 #$ + 127#$ = 133#$ = 1000 0101 = 1000 0101
( бит порядка
С учетом того, что заданное число положительно (т.е. в знаковом бите должен стоять 0), после объединения полученных кодов получим:
Знак |
Смещенный порядок p |
|
|
|
|
|
|
|
|
|
|
Мантисса m |
|
|
|
|
|
|
|
|
|
|
|||||||||||
1 бит |
|
|
|
8 бит |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 бита |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|
0 |
1 |
0 |
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
30 |
|
|
|
|
|
|
23 |
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
или
01000010110000011110101110000101
3)Запишем число в десятичной системе счисления по его внутреннему представлению в ЭВМ в формате с плавающей запятой одинарной точности 32 бита.
Пусть после преобразований, описанных в задании, получено следующее представление в формате с плавающей запятой одинарной точности 32 бита:
01000101100011110000000111000000
Страница 6 из 7
Для получения десятичного значения числа по заданному его представлению необходимо выполнить последовательность шагов, описанных в предыдущем пункте, в обратном порядке.
Сначала выделим коды знака, порядка и мантиссы:
Знак |
Смещенный порядок p |
|
|
|
|
|
|
|
|
|
|
Мантисса m |
|
|
|
|
|
|
|
|
|
|
|||||||||||
1 бит |
|
|
|
8 бит |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 бита |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
|
0 |
0 |
0 |
|
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
30 |
|
|
|
|
|
|
23 |
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
или
.0 10001011 00011110000000111000000
# бит знака ( бит парядка |
бита мантиссы |
Поскольку в знаковом бите стоит 0, то число положительно.
Смещенный порядок:
= 1000 1011 = 139#$ = 12#$ + 127#$
Таким образом, несмещенный порядок числа равен +1210.
Мантисса нормализованного числа:
= 00011110000000111000000
бита мантиссы
Тогда нормализованное число запишется в виде:
1, 0001 1110 0000 0011 1000 000 ∙ 2 #
знака мантиссы
Теперь необходимо денормализовать число, т.е. сдвинуть запятую влево (при отрицательном порядке) или вправо (при положительном) на количество разрядов равное значению порядка:
1, 0001 1110 0000 0011 1000 000 ∙ 2 # = 100 0111 1000, 0000 1110 0000 0
Полученное двоичное число переводим по частям в десятичную систему, получаем:
100 0111 1000 2 → 228810
0, 0000 1110 0000 0 2 → 0,054687510
Таким образом, искомое число есть:
+2288,054687510
Страница 7 из 7