Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа № 7

.2.pdf
Скачиваний:
55
Добавлен:
09.05.2015
Размер:
180.09 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 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