Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8596.doc
Скачиваний:
12
Добавлен:
13.04.2015
Размер:
87.04 Кб
Скачать

Вывод по работе

В ходе лабораторной работы были изучены принципы формирования машинных кодов в компьютере .Так же были выполнены принципы записи целых чисел в прямом, обратном и дополнительном кодах, принципы записи действительных чисел в виде кодов с плавающей точкой,принципы осуществления арифметических операций с действительными числами.

Ответы на контрольные вопросы

  1. Целое число без знака преобразуется в более короткое целое число без знака или со знаком путем усечения битов высокого порядка или в более длинное целое число со знаком или без знака путем нулевого расширения

2. При записи числа в прямом коде старший разряд (старший бит) объявляется знаковым разрядом (знаковым битом). Если знаковый бит равен 0, число положительное, иначе — отрицательное. В остальных разрядах (которые называются цифровыми разрядами) записывается двоичное представление модуля числа.

Функция кодирования двоичных чисел (в том числе целых чисел и смешанных дробей) в прямом коде имеет вид :где— номер знакового разряда (знакового бита). В частности, при кодировании правильных двоичных дробей (то есть чисел, удовлетворяющих неравенству ), и функция кодирования принимает вид:

Величина числа в прямом коде определяется по следующей формуле:

где:

— номер разряда числа; отрицательное число — номер разряда справа от запятой; положительное число — номер разряда слева от запятой;

— количество разрядов справа от запятой (кол-во разрядов дробной части числа);

— количество разрядов слева от запятой (кол-во разрядов целой части числа);

— цифра в -ом разряде;

— основание системы счисления; равно 2 для двоичных чисел, 10 — для десятичных, 16 — для шестнадцатеричных и т. п.;

— значение знакового разряда (знакового бита);

— число, имеющее разрядов справа от запятой (дробная часть) и разрядов слева (целая часть); учитываются только цифровые разряды.

Как видно из последней формулы, знаковый разряд в прямом коде не имеет разрядного веса. При выполнении арифметических операций это приводит к необходимости отдельной обработки знакового разряда в прямом коде.

3-4.Обратный n-разрядный двоичный код положительного целого числа состоит из одноразрядного кода знака (двоичной цифры 0), за которым следует (n−1)-разрядное двоичное представление модуля числа (обратный код положительного числа совпадает с прямым кодом).

Пример. Двоичное представление числа 5 есть 101. Обратный 10-и разрядный двоичный код числа +5 записывается как 00 0000 0101.

Обратный n-разрядный двоичный код отрицательного целого числа состоит из одноразрядного кода знака (двоичной цифры 1), за которым следует (n−1)-разрядное двоичное число, представляющее собой инвертированное (n−1)-разрядное представление модуля числа. Следует отметить, что для изменения знака числа достаточно проинвертировать все его разряды, не обращая внимания, знаковый ли это разряд или информационный.

Пример. Двоичное представление числа 5 есть 101, его 10-и разрядное двоичное представление — 00 0000 0101. Обратный 10-разрядный двоичный код числа −5 есть 11 1111 1010.

Для преобразования отрицательного числа в положительное тоже применяется операция инвертирования. Этим обратные коды удобны в применении. В качестве недостатка следует отметить, что в обратных двоичных кодах имеются два кода числа 0: «положительный нуль» 00 0000 0000 и «отрицательный нуль» 11 1111 1111 (приведены 10-и разрядные обратные коды). Это приводит к некоторому усложнению операции суммирования. Поэтому в дальнейшем перешли к дополнительным кодам записи знаковых целых чисел.

n-разрядный обратный код позволяет представить числа от −2n−1 + 1 до +2n−1 − 1.

5-7.Преобразование числа из прямого кода в дополнительный осуществляется по следующему алгоритму.

Если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается;

Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.

Пример. Преобразуем отрицательное число −5, записанное в прямом коде, в дополнительный. Прямой код числа −5, взятого по модулю:

101

Инвертируем все разряды числа, получая таким образом обратный код:

010

Добавим к результату 1

011

Допишем слева знаковый единичный разряд

1011

Для обратного преобразования используется тот же алгоритм. А именно:

1011

Инвертируем все разряды числа, получая таким образом обратный код:

0100

Добавим к результату 1

0101

И проверим, сложив с дополнительным кодом

0101 + 1011 = 10000, пятый разряд выбрасывается.

8.Покажем преобразование действительного числа для представления его в памяти ЭВМ на примере величины типа Double.

Как видно из таблицы, величина это типа занимает в памяти 8 байт. На рисунке ниже показано, как здесь представлены поля мантиссы и порядка (нумерация битов осуществляется справа налево):

S Смещенный порядок Мантисса

63 62..52 51..0

Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна 1, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка хранится здесь не как целое число, представленное в дополнительном коде. Для упрощения вычислений и сравнения действительных чисел значение порядка в ЭВМ хранится в виде смещенного числа, т.е. к настоящему значению порядка перед записью его в память прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Double порядок занимает 11 бит и имеет диапазон от 2-1023 до 21023, поэтому смещение равно 1023(10) = 1111111111(2). Наконец, бит с номером 63 указывает на знак числа.

Таким образом, из вышесказанного вытекает следующий алгоритм для получения представления действительного числа в памяти ЭВМ:

перевести модуль данного числа в двоичную систему счисления;

нормализовать двоичное число, т.е. записать в виде M × 2p, где M — мантисса (ее целая часть равна 1(2)) и p — порядок, записанный в десятичной системе счисления;

прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;

учитывая знак заданного числа (0 — положительное; 1 — отрицательное), выписать его представление в памяти ЭВМ.

Пример. Запишем код числа -312,3125.

Двоичная запись модуля этого числа имеет вид 100111000,0101.

Имеем 100111000,0101 = 1,001110000101 × 28.

Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 1031(10) = 10000000111(2).

Окончательно

1 10000000111 0011100001010000000000000000000000000000000000000000

63 62..52 51..0

Очевидно, что более компактно полученный код стоит записать следующим образом: C073850000000000(16).

Другой пример иллюстрирует обратный переход от кода действительного числа к самому числу.

Пример. Пусть дан код 3FEC600000000000(16) или

0 01111111110 1100011000000000000000000000000000000000000000000000

63 62..52 51..0

Прежде всего замечаем, что это код положительного числа, поскольку в разряде с номером 63 записан нуль. Получим порядок этого числа: 01111111110(2) = 1022(10); 1022 - 1023 = -1.

Число имеет вид 1,1100011 × 2-1 или 0,11100011.

Переводом в десятичную систему счисления получаем 0,88671875.

9.Мантисса – это целое число фиксированной длины, которое представляет старшие разряды действительного числа. Допустим наша мантисса состоит из трех бит (|M|=3). Возьмем, например, число «5», которое в двоичной системе будет равно 1012. Старший бит соответствует 22=4, средний (который у нас равен нулю) 21=2, а младший 20=1. Порядок – это степень базы (двойки) старшего разряда. В нашем случае E=2. Такие числа удобно записывать в так называемом «научном» стандартном виде, например «1.01e+2». Сразу видно, что мантисса состоит из трех знаков, а порядок равен двум.

10.Здесь, поскольку E=1, степень двойки первого разряда (который идет перед запятой), равна «1». Два других разряда, расположенных правее (после запятой), обеспечивают вклад 2E-1 и 2E-2 (20 и 2-1 соответственно). Очевидно, что регулируя E одно и то же число можно представить по-разному. Рассмотрим пример с длиной мантиссы |M|=4. Число «2» можно представить в следующем виде:

  • 2 = 10 (в двоичной системе) = 1.000e+1 = 0.100e+2 = 0.010e+3. (E=1, E=2, E=3 соответственно)

  • Обратите внимание, что одно и то же число имеет несколько представлений. Это не удобно для оборудования, т.к. нужно учитывать множественность представлния при сравнении чисел и при выполнении над ними арифметических операций. Кроме того, это не экономично, поскольку число представлений — конечное, а повторения уменьшают множество чисел, которые вообще могут быть представлены. Поэтому уже в самых первых машинах начали использовать трюк, делая первый бит мантиссы всегда положительным. Такое предаставление назвали нормализованным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]