Методические указания к работе. К п.1. Различают естественную (с фиксированной запятой) и полулогарифмическую (с плавающей запятой) формы представления числовой информации в ЭВМ

К п.1. Различают естественную (с фиксированной запятой) и полулогарифмическую (с плавающей запятой) формы представления числовой информации в ЭВМ.

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

Для просмотра и изображения в отчете структуры однобайтного числа нужно активизировать пункт меню Однобайтные. Старший, седьмой разряд является знаковым (для положительного числа его значение равно “0”, для отрицательного равно “1”).

К п. 2. Перевод в двоичную систему счисления можно выполнить с помощью стандартной программы "Калькулятор" или, для закрепления материала лабораторной работы №1, вручную.

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

a bnbn-1 ... b0 ,

где a – знак числа, bnbn-1 ... b0 – цифры модуля числа.

Формат чисел с фиксированной запятой зависит от разрядности данных.

· старший разряд является знаковым.

· один разряд выделяется для фиксации переполнения, которое может возникнуть при выполнении вычислений (в исходном состоянии его значение равно "0", а при возникновении переполнения в него записывается "1").

· если запятая стоит после знакового разряда или бита переполнения, то данное число – правильная дробь, если после младшего (нулевого) разряда – целое число.

Для записи двухбайтных двоичных чисел в форме с фиксированной запятой воспользоваться упрощенной структурой, показанной в таблице 5, иллюстрирующей запись числа –2100.

Таблица 5

                                 
                               
переполнеие знак   м о д у л ь ч и с л а  

К п.3..Алгоритм выполнения сложения в прямом коде сложен, совпадает с алгоритмом алгебраического сложения десятичных чисел и состоит из следующих этапов:

сравниваются знаки чисел;

если знаки одинаковые, то суммируются модули числа и результату присваивается знак слагаемых:

если знаки различные, то сравниваются модули числа и определяется число с большим значением модуля, из которого вычитается второе число и результату присваивается его знак

Продемонстрируем это на простом примере всех вариантов сложения пятиразрядных чисел с модулями 9 и 3 (столбец "прямой код" в таблице 7).

Для проверки вычислений с помощью программы INF необходимо активизировать пункт меню Двухбайтные\Прямой и в появившемся окне ввести в разряды двоичные числа (Bin) исходные десятичные числа (Dec) шестнадцатеричный эквивалент (Hex). При вводе двоичных чисел нужно учесть, что в структуре, изображенной на экране, старший, пятнадцатый разряд является знаковым, а четырнадцатый – разрядом перепонения. Следует обратить внимание, что шестнадцатеричный эквивалент Hex – это не значение числа в шестнадцатеричной системе счисления, а запись двоичных цифр столбца Bin с помощью шестнадцатеричных цифр. Из сравнения видно, что запись эквивалента короче двоичной и удобней для чтения, сравнения и ввода.

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

Таблица 6

  Dec Bin Hex
Слагаемое 1     045C
Слагаемое 2 –36    
Результат      

Таблица 7

Сложение Прямой код Обратный код Дополнительный код
3+9 = 12 0 0011 0 1001 0 1100 0 0011 + 0 1001 0 1100 ® прямой код (ответ) 0 0011 прямой код + 0 1001 прямой код 0 1100 ® прямой код (ответ)
– 3+9= 12 1 0011 0 1001 - 0011 0 0101 1 1100 обратный код + 0 1001 прямой код 10 0101 переполнение + циклический перенос 1 0 0110 ® прямой код (ответ) 1 1101 дополнительный + 0 1001 прямой код 10 0110 переполнение 0 0110 ® пр. код отбрасывание (ответ)
+3 – 9= –6 0 0011 1 1001 - 0011 1 0110 0 0011 прямой код + 1 0110 обратный код 1 1001 ® обратный код 1 0110 ® прямой код (ответ) 0 0011 + 1 0111 1 1 1010 ®доп.код 1 0101 инверсия модуля + 1 1 0110 ® пр. код (ответ)
– 3 – 9 = –12 1 0011 1 1001 1 1100 1 1100 обратный код + 1 0110 обратный код 11 0010 переполнение + циклический перенос 1 1 0011 ® обратный код 1 1100 ® прямой код 1 1101 дополнительный + 1 0111 дополнительный 1 1 0100 дополнительный 1 1011 инверсия модуля + 1 1 1100® прямой код (ответ)

К пп.4-5. Для упрощения алгоритма выполнения сложения (исключение вычитания) арифметические действия выполняют, представляя отрицательные числа в обратном или дополнительном коде.

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

Обратный код является дополнением модуля исходного числа до наибольшего числа без знака, помещающегося в разрядную сетку. Для обратного кода a всегда равно 1.

Разряд числа в обратном коде: biобр= q – biпрям – 1

где q – основание системы счисления.

Например: 53010 (прямой код) ® 99910 –53010 = 46910 (обратный код).

Для двоичной системы: b0i = 2 – bi– 1 = 1 – bi

Например: –1010 = 1 00010102® прямой код

–1010 = 1 11101012 ® обратный код.

Как видно из примера обратный код можно получить инверсией всех разрядов модуля.

Дополнительный код является дополнением модуля числа до qn (где n - количество разрядов, отводимое на представление числа). Дополнительный код получается также путем прибавления единицы к обратному коду.

Число в дополнительном коде: Aдq = qn – Aпрq

Например: 53010 (прямой код) ® 103 –530 = 470 (дополнит.код).

При выполнении арифметических операций с применением обратного или дополнительного кодов положительное число представляется в прямом коде, а отрицательное в обратном или дополнительном, затем оба числа складываются, включая и знаковые разряды. Если имеется перенос из старшего, т.е. знакового разряда, то при применении обратного кода он прибавляется к результату, а при применении дополнительного – игнорируется. Результат получается в прямом коде, если он положительный, в обратном или дополнительном коде, если отрицательный.

Данное правило проиллюстрировано примерами в табл.7.

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

Прямой код: – 0 ® 10000000

Обратный код: – 0 ® 11111111

Дополнительный код: – 0 ® 10000000

Для пороверки вычислений с помощь программы INF3 необходимо ввести исходные данные в окнах пунктов меню Двухбайтные\Обратный и Двухбайтные\Дополнительный. Если действия выполнены верно и правильно сделан ввод данных, то в окне появится таблица вычислений, которую нужно включть в отчет.

К п.6.

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

Аq= m*qp

где m- мантисса; р - порядок; q - основание системы счисления.

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

1/q £ m <1 для двоичной: 1/2 £ m < 1.

Для представления чисел с плавающей запятой в отчете следует использовать формат, изображенный в окне меню Сплав. точкой прогшраммы Inf3. На все число отводится 24 разряда. На порядок отводится 8 разрядов, старший из которых –знаковый. Знаковый разряд мантиссы определяет знак числа. Бит переполнения фиксирует переполнение разрядной сетки после выполнения операции. На модуль мантиссы отводится 14 разрядов. Мантисса считается ненормализованной в двух случаях:

· если бит переполнения равен 1 (m> 1);

· если бит переполнения равен 0 (m< 1) и старший значащий разряд мантиссы равен 0 (m< 0.5).

Операция сложения чисел в форме с плавающей точкой выполняется в три этапа:

шаг 1 – выравнивание порядков;

шаг 2 – сложение мантисс;

шаг 3 – нормализация мантиссы результата.

До выполнения шагов сложения необходимо вначале записать слагаемые в полулогарифмической форме и провести нормализацию. Потом занести двоичные числа в структуры числа с плавающей запятой, затем мантиссу отрицательных числа нужно перевести в дополнительный код. Если на втором шаге разряд переполнения будет равен 1, то эта единица игнорируетя. Если на третьем шаге знак мантиссы будет равен 1, то для получения результата следует перевести мантиссу в прямой код.

Результаты вычислений необходимо представить в форме, приведенной в таблице 8.

В качестве примера выполним сложение чисел 3 и –9.

1. Запись в полулогарифмической форме: + 0011 .2 000-1001 .2 000

2. Нормализация первого числа путем переноса точки в мантиссе на два разряда влево, чтобы первый разряд после точки был ненулеовой (т.е. умножение числа на 2 –010) и добавление к порядку +10 (т.е. умножение числа на 2+010). В результате получим: +.1100*2 +010

3. Для второго числа требуется сдвиг на четыре разряда:-. 1001*2 +100

4. Занесем двоичные числа в структуру (таблица 8)

5. Выравнивание производится к старшему порядку (т.е порядок увеличивается на 2 +010 , а мантисса сдвигается вправо на два разряда). Выравнивание к младшему порядку потребовало бы сдвига влево, при этом старшие разряды могут выити за разрядную сетку.т.е. потеряться.

6. Производится сложение мантисс по алгоритму сложения чисел с фиксированной запятой в дополнительном коде. Порядок при этом, естественно не меняется.

7. Результат в прямом коде получился ненормазизованным, поэтому выполняется нормализация: мантисса сдвигается влево на 1 разряд, а порядок уменьнается на 1.

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

Таблица 8

  Слагаемые/результат
Шаг D B зп порядок зм п\п м а н т и с с а H
Записьисходных   0 000 0010 0 0 11 0000 0000 0000  
нормализованных чисел -9 0 000 0100 1 0 10 0100 0000 0000 04A400
Выравнивание   0 000 0100 0 0 00 1100 0000 0000 040C00
порядка -9 0 000 0100 1 0 10 0100 0000 0000 04A400
прямой код   0 000 0100 0 0 00 1100 0000 0000 040C00
обратный код -9 0 000 0100 1 0 01 1011 1111 1111 049BFF
прямой   0 000 0100 0 0 00 1100 0000 0000 040C00
дополнительный -9 0 000 0100 1 0 01 1100 0000 0000 049C00
Сложение мантисс, дополнительный код -6 0 000 0100 1 0 10 1000 0000 0000 04A800
Инвертирование мантиссы -6 0 000 0100 1 0 01 0111 1111 1111 0497FF
Результат прямой код -6 0 000 0100 1 0 01 1000 0000 0000  
Нормализация мантиссы -6 0 000 0011 1 0 110000 0000 0000 03B000

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: