Арифметические операции над двоичными числами с плавающей точкой



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

Сложение (вычитание). Операция сложения (вычитания) производится в следующей последовательности.

1. Сравниваются порядки (характеристики) исходных чисел путем их вычитания р=р1-р2. При выполнении этой операции определяется, одинаковый ли порядок имеют исходные слагаемые.

2. Если разность порядков равна нулю, то это значит, что одноименные разряды мантисс имеют одинаковые веса (двоичный порядок). В противном случае должно проводиться выравнивание порядков.

3. Для выравнивания порядков число с меньшим порядком сдвигается вправо на разницу порядков Ар. Младшие выталкиваемые разряды при этом теряются.

4. После выравнивания порядков мантиссы чисел можно складывать (вычитать) в зависимости от требуемой операции. Операция вычитания заменяется операцией сложения в соответствии с данными табл. 2.3. Действия над слагаемыми производятся в ОК или ДК по общим правилам.

5. Порядок результата берется равным большему порядку.

6. Если мантисса результата не нормализована, то осуществляются нормализация и коррекция значений порядка.

Пример 5. Сложить два числа А10=+1.375; B10=-0.625.

А2=+1.011=0: 1011*101; B2=-0.101=-0:101*100.

В нормализованном виде эти числа будут иметь вид:

1. Вычитаем порядки Δp=p1-p2=1-0=1. В машине эта операция требует операции сложения с преобразованием порядка чисел в дополнительный код:

Определяем, что Δр≠ 0.

2. Порядок первого числа больше порядка второго числа на единицу. Требуется выравнивание порядков.

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

[B2]исх=0: 0 1: 101

после сдвига

[B2]п=0: 11:0101

[mB]дк= 1: 1011

4. Складываем мантиссы.

Мантисса числа С - положительная.

5. Порядок числа С равен порядку числа с большим порядком, т.е. р = +1.

2]п=0: 1 0: 0110.

Видно, что мантисса результата не нормализована, так как старшая цифра мантиссы равна нулю.

6. Нормализуем результат путем сдвига мантиссы на один разряд влево и соответственно вычитаем из значения порядка единицу:

Умножение (деление). Операция умножения (деления) чисел с плавающей точкой также требует разных действий над порядками и мантиссами. Алгоритмы этих операций выполняются в следующей последовательности.

1. При умножении (делении) порядки складываются (вычитаются) так, как это делается над числами с фиксированной точкой.

2. При умножении (делении) мантиссы перемножаются (делятся).

3. Знаки произведения (частного) формируются путем сложения знаковых разрядов сомножителей (делимого и делителя). Возможные переносы из знакового разряда игнорируются.

Задание:

  I II III IV V VI

1

149,37510 711,2510 360,2510 741,12510 597,2510 237,7310
65,216 -3BF,A16 -2FE,616 24A,416 24D,516 BB,416

2

101010000,10111 1100110110,0011 11001010,01 1111100100,11011 1101111111,1 1000101001,1
11001100,01 11111110,01 1110001,001 101110111,011 1100111110,1011 1111101,1
3 X=69,416 Y=A,D16 X=2B,A16; Y=36,616 X=7,416; Y=1D,416 X=36,416; Y=A,A16 X=4B,216; Y=3C,316 X=4A,316 Y=F,616;
4 X=326,810; Y=-15,210 X=-220,1510; Y=6,2910 X=150,4610; Y=-7,52310 X=365,0210; Y=-18,25110 X=-128,310; Y=6,41510 X=421,210; Y=-11,710

 

Порядок выполнения работы:

Выполните арифметические операции в естественной и нормальной форме:

1. сложение

2. вычитание

3. умножение

4. деление

Контрольные вопросы:

1. Сформулируйте правила сложения чисел в форме с плавающей точкой

2. Чем отличается числа в форме с фиксированной точкой от чисел с плавающей точкой.

Практическая работа №3

Тема: Умножение в АЛУ двоичных чисел с фиксированной точкой

Цель работы:

Средства:

Литература:

1. Калабеков Б.А. Цифровые устройства и микропроцессорные системы. – М.: Горячая линия, 2005г

2. Калиш Г.Г. Основы вычислительной техники. – М. Высш. шк., 2000 г.

Краткие теоретические сведения:

Умножение двоичных чисел

Применительно к двоичной ПСС наиболее известны следующие основные способы выполнения операций умножения:

умножение начиная с младших разрядов множителя:

умножение начиная со старших разрядов множителя:

При «ручном» методе в обоих случаях умножение сводится к последовательному поразрядному умножению множимого на цифры множителя и накоплению (суммированию) получаемых частичных произведений. При этом операциями сложения могут управлять разряды множителя: если в i-м разряде множителя находится единица, то к сумме частичных произведений добавляется множимое с соответствующим сдвигом на i — 1 разряд (вправо или влево в зависимости от принятого способа выполнения операции умножения); если в i-м разряде множителя нуль, то множимое не прибавляется.

При «машинном» методе произведение формируется в виде возрастающего (по модулю) значения частичной суммы, равной после умножения на i-й разряд множителя сумме первых i частичных произведений.

Рассмотренные примеры показывают, что для получения произведения, помимо сложения, необходимо выполнять операции сдвига чисел (множимого либо частичной суммы). Очевидно, что произведение двух n - разрядных чисел есть число 2n - разрядное. Поэтому в случае ограничения поля цифр произведения n разрядами при умножении целых чисел в качестве результата берутся младшие n разрядов (и старших n разрядах должны быть нули, так как в противном случае вырабатывается признак переполнения), а мри умножении правильных дробей в качестве результата берутся старшие n разрядов (младшие n разрядов отбрасываются — происходит усечение числа — либо используются для округления кода старших n разрядов).

Знак произведения формируется по известному правилу: (+)•(+) = (+); (+)•(-) = (-); (-)•(+) = (-);( — )•( — ) = (+). В ЭВМ, как было указано в § 2.3, знак « —» числа кодируется единицей, а «+» — нулем, но правило формирования знака сохраняется. Операция, которую реализует ЭВМ для определения знака произведения, называется суммой по модулю два и обозначается : ; ; ; .

 

Существует четыре метода умножения. Рассмотрим наиболее распространенный метод умножения целых чи­сел, начиная с младшего разряда со сдвигом суммы частичных про­изведений вправо при неподвижном множимом (рис. 7.4).

Операция умножения состоит из п или п—1 циклов (п—1 —чис­ло цифровых разрядов множителя). В каждом цикле анализиру­ется очередная цифра множителя, и если это 1, то к сумме частич­ных произведений прибавляется множимое; если 0 — прибавления множимого не происходит. Цикл завершается сдвигом суммы час­тичных произведений относитель­но неподвижного множителя (если не выполняется умножение на знаковый разряд).

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

Схема АЛУ для умножения n-разрядных положительных двоич­ных чисел приведена на рис. 7.5. В состав АЛУ входят входной ре­гистр множимого Рг1, регистры множителя Рг2 и Рг2’ на которых с помощью специально организованной передачи цепи сдвига впра­во Рг2/ = П(1)Рг2 и передачи Рг2=Рг2' выполняется сдвиг мно­жителя вправо, сумматор СМ для образования суммы частичных произведений, входной РгВ и выходной РгСМ регистры сумматора, на которых соответственно хранится текущее значение и образует­ся новое значение суммы частичных произведений и окончательное произведение.

Первоначаль­но в P г1 поступает множимое. Регистр РгВ, хранящий сумму час­тичных произведений, устанавливается в нулевое состояние, а в счетчик циклов СчЦ за­носится число обрабаты­ваемых цифровых разря­дов. Затем в Рг2 поступает множитель. На этом завершается процедура началь­ных установок и начина­ется процесс вычисления сумм частичных произве­дений.

В зависимости от зна­чений (0 или 1) младшего разряда множителя к час­тичному произведению прибавляется либо 0, либо х, для чего регистру РгА сумматора присваивается соответствующее значе­ние. Полученная сумма умножается на 2-1 путем передачи кода с выхода сумматора на РгСМ со сдвигом на один разряд вправо. Одновременно множитель подготавлива­ется к перемещению в Рг2 так, чтобы на месте анализируемого младше­го разряда в Рг2 оказался следующий разряд множителя. Для этого содержимое регистра Рг2 передается в регистр Рг2' со сдвигом вправо на один раз­ряд.

Разряд 0 регистра Рг2’ при этом остается свободным и в него заносится младший разряд суммы, выходящий при сдвиге за пре­делы регистра РгСМ (Рг2'[0]: = СМ[п—1]. В следующем такте завершается сдвиг множителя путем занесения содержи­мого регистра Рг2' в регистр Рг2 и в регистре РгВ образуется сдвинутая сумма частичных произведений.

Кроме того, в этом такте уменьшается на 1 содержимое счет­чика циклов. Когда счетчик циклов достигает нуля, в регистрах РгСМ и Рг2 будут храниться соответственно старшие и младшие разряды произведения, требующие сдвига на один разряд вправо для правильного расположения в формате двойного слова. После выполнения этих сдвигов результат операции из РгСМ и Рг2 поступает на ШИВых.

Задание:

Составить алгоритм выполнения операции умножения целых положительных чисел.

Порядок выполнения работы:

  1. Зарисовать схему АЛУ.
  2. Разработать алгоритм, опираясь на схему и описание работы.
  3. Внести изменения в алгоритм умножения для одной из трех схем умножения:

Схема 1

Схема 2

Схема 3

Контрольные вопросы:

  1. Какие виды АЛУ вы знаете?
  2. Перечислите основные методы ускорения умножения
  3. Как реализуется операция умножения в АЛУ?

 

Практическая работа №4

Архитектура ЭВМ и вычислительных систем

Тема: CMOS - память компьютера

Цель работы: Познакомится с основными принципами работы с CMOS

Средства: Турбо Си+

Литература: Айден К., Колесниченко О. Аппаратные средства PC. 2-е издание. – СПб.: BHV-Санкт-Петербург, 1998

Краткие теоретические сведения:

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

Адрес ячейки Содержимое

00h - 0Dh +

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

0Eh                          Байт состояния диагностики при включении питания

0Fh                           Байт состояния отключения

10h                           Тип используемого НГМД

11h                           Зарезервировано

12h                            Тип НМД (если тип меньше 15)

13h                           Зарезервировано

14h                           Конфигурация оборудования

15h - 16h               Объем основной памяти

17h - 18h               Объем расширенной (extended) памяти

19h                           Тип первого НМД (если тип > 15)

1Ah                          Тип второго НМД (если тип > 15)

1Bh - 20h               Зарезервировано

21h - 2Dh               Зарезервировано

2Eh - 2Fh               Контрольная сумма ячеек 10h - 20h

30h - 31h               Объем расширенной (extended) памяти

32h                           Текущее столетие в двоично-десятичном

                                 коде (19h для 19-го столетия)

33h                           Различная информация

34h - 3Fh               Зарезервировано

Программа для чтения содержимого CMOS-памяти:

#include <stdio.h>

#include <stdlib.h>

main()

{

                unsigned char cmos[164];

                int i;

                printf("\n*Чтение из CMOS* ©Фролов A. 1991\n\n");

                for(i=0; i < 64; i++)

                                      {

                                                           outp(0x70,i);

                                                           cmos[i]=inp(0x71);

                                      }

                printf("\nЯчейки часов реального времени: ");

                for(i=0; i < 0xd; i++)

                                      {

                                                           printf("%02.2x ",(unsigned)cmos[i]);

                                      }

                printf("\nБайт диагностики: %02.2x",cmos[0xe]);

                printf("\nБайт отключения: %02.2x\n",cmos[0xf]);

                printf("\nPassword : ");

                for(i=0x34; i < 0x40; i++)

                                      {

                                                           printf("%02.2x ",(unsigned)cmos[i]);

                                    }

                cmos[0x40]=0;

                printf(">%s<\n",&cmos[0x34]);

                return 0;

}

 

Задание: Написать программу чтения содержимого CMOS-памяти.

Порядок выполнения работы:

1. Ввести и откомпилировать приведенную выше программу.

2. Прокомментировать каждое предложение программы

Контрольные вопросы:

1. Назначение CMOS-памяти

2. Как осуществляется питание CMOS-памяти в современных ПК?

3. По какому адресу находится текущее столетие в двоично-десятичном коде?

 

Практическая работа №5

Архитектура ЭВМ и вычислительных систем

Тема: Базовая система ввода/вывода BIOS

Цель работы: Познакомится с основными принципами работы с BIOS

Средства: Турбо Си+

Литература: Айден К., Колесниченко О. Аппаратные средства PC. 2-е издание. – СПб.: BHV-Санкт-Петербург, 1998

Краткие теоретические сведения:


Дата добавления: 2019-09-13; просмотров: 665; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!