Реферат: Системы счисления 3
--PAGE_BREAK--Сложение чисел с фиксированной запятойАлгебраическое сложение чисел с фиксированной запятой в цифровых машинах может производиться в одном из машинных кодов: прямом, дополнительном или обратном. Чаще всего используется либо дополнительный, либо обратный код. При этом знаковый разряд и цифровая часть числа рассматривается как единое целое, в результате чего с отрицательными числами машина оперирует как с положительными, независимо от того, представлены ли они в виде правильных дробей или в виде целых чисел. Главное достоинство дополнительного и обратного кодов заключается в том, что правильный знак суммы получается автоматически в процессе суммирования знаковых цифр операндов и цифры переноса из соседнего младшего разряда. В случае возникновения единицы переноса из знакового разряда суммы ее нужно отбросить при сложении в дополнительном коде и прибавить к младшему разряду суммы при сложении в обратном коде (т. е. произвести циклический перенос единицы переполнения).
Алгебраическое сложение много разрядных чисел обычно организуется как регулярный процесс, состоящий из n одинаковых операций поразрядного сложения вычитания, где n- количество разрядов в каждом из операндов).
При этом в зависимости от знаков слагаемых возможны четыре случая:
1) Х1 > 0, Х2 > 0, Х3 = Х1 + Х2 > 0;
2) Х1 > 0, Х2 < 0, Х3 = Х1 + Х2 > 0;
3) Х1 > 0, Х2 < 0, Х3 = Х1 + Х2 < 0;
4) Х1 < 0, Х2 < 0, Х3 = Х1 + Х2 < 0;
Примеры сложения чисел с фиксированной запятой были рассмотрены выше.
Сложение чисел с плавающей запятой
Если имеются два числа в нормальной форме: Х1 = m1 10p1 и Х2 = m2 10p2, то для того чтобы их можно было сложить, нужно предварительно привести их к одному и тому же порядку Робщ, т. е. преобразовать одно из слагаемых, например, первое следующим образом:
Х1 = m1 10p1 = m1* 10p1 = m1* 10pобщ.
Далее можно вынести степень основания системы за скобки и произвести сложение мантисс: Х1 + Х2= m1* 10pобщ. + m2 10pобщ. = (m1* + m2 ) 10pобщ.
Преобразовывать всегда нужно меньше слагаемое, так как в противном случае произойдет переполнение разрядной сетки мантиссы преобразуемого числа.
Машинная операция сложения чисел в нормальной форме распадается таким образом, на 4 этапа:
1. Уравниваются порядки слагаемых: меньший порядок увеличивается до большего, мантисса преобразуемого числа сдвигается вправо (число денормализуется) на соответствующее количество разрядов. Практически в машинах производится вычитание порядков операндов. Знак и модуль разности Р1 — Р2 определяют соответственно, какое из слагаемых нужно преобразовывать и на сколько единиц следует сдвигать мантиссу преобразуемого числа.
2. Производится преобразование мантисс слагаемых в один из модифицированных кодов.
3. Мантиссы слагаемых суммируются по правилам сложения дробных чисел с фиксированной запятой.
4. В случае надобности мантисса суммы переводится в прямой код, производится нормализация суммы и округление ее мантиссы.
ПРИМЕР. Используя дополнительный код, сложить два числа:
<img width=«74» height=«14» src=«ref-2_1109428505-128.coolpic» v:shapes="_x0000_s1118"><img width=«50» height=«14» src=«ref-2_1109428633-114.coolpic» v:shapes="_x0000_s1117">[X1]пр = 0 101; 1,10101 и [X2]пр = 0 100 ; 1,11001
порядок мантисса
РЕШЕНИЕ:
1. [X2]пр = 0 101; 1,011001
2. [m1]мод= 11,01011; [m1]мод= 11,100111.
доп доп
3. [m1]мод= 11,01011
· доп
[m2]мод= 11,01011
доп
<img width=«194» height=«2» src=«ref-2_1109428747-83.coolpic» v:shapes="_x0000_s1119">
[m3]мод= 110, 111101
доп
<img width=«79» height=«17» src=«ref-2_1109428830-130.coolpic» v:shapes="_x0000_s1120 _x0000_s1135"> <img width=«166» height=«17» src=«ref-2_1109428960-151.coolpic» v:shapes="_x0000_s1121 _x0000_s1134">
отбрасывается запрещенная комбинация
4. Комбинация знаковых цифр мантиссы показывает, что сумма денормализована влево (всегда только на один разряд)
Произведем нормализацию суммы вправо
<img width=«63» height=«12» src=«ref-2_1109429111-106.coolpic» v:shapes="_x0000_s1122"> <img width=«39» height=«28» src=«ref-2_1109429217-167.coolpic» v:shapes="_x0000_s1123">
[m3]мод= 10, 111101 1,0111101
доп
Робщ = 0,101 + 0,001 = 0,110
Далее переводим сумму в прямой код и производим округление ее мантиссы до пяти разрядов.
<img width=«74» height=«14» src=«ref-2_1109429384-127.coolpic» v:shapes="_x0000_s1126"><img width=«50» height=«14» src=«ref-2_1109429511-116.coolpic» v:shapes="_x0000_s1125"><img width=«14» height=«2» src=«ref-2_1109429627-74.coolpic» v:shapes="_x0000_s1124">Ответ: [X3]пр = 0 110 ; 1,1000011 ~ 0 100; 1, 10001
порядок мантисса
продолжение
--PAGE_BREAK--Умножение чисел с фиксированной запятой
Наиболее просто умножение выполняется в прямом коде, независимо от того, являются ли операнды целыми или дробными числами. В машинах с фиксированной запятой оно реализуется в два этапа.
1. Определяется знак произведения с помощью сложения знаковых цифр сомножителей по модулю два, где нуль соответствует плюсу, а единица — минусу:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0
Вручную это эквивалентно:
(+) (+) = (+); (+) (-) = (-); (-) (+) = (-); (-) (-) = (+).
2. Производиться перемножение модулей сомножителей, затем в случае необходимости округление полученного модуля произведения, после чего к модулю результата приписывается его знак, определенный на первом этапе.
Умножение производится по обычным правилам арифметики согласно двоичной таблицы умножения. Произведение модулей |Х3| = |Х1| * |Х2| двух (например дробных) чисел, где множитель Х2 = Х21 2-1 + Х22 2-2 +…+ Х2n2-n, чаще всего вычисляется как сумма так называемых частичных произведений:
n
/Х3/ = å/Х/ Х2i2-i
i=1
В машинах может быть реализовано как умножение, начинающееся с младшей цифры множителя (наиболее привычный способ), так и умножение, начинающееся со старшей цифры множителя. При умножении вручную в первом случае частичные произведения сдвигаются влево, во втором — вправо.
ПРИМЕР. Перемножить числа [X1]пр = 0,1010 и [X2]пр = 1,1101
Решение.
1. Определяем знак произведения 0 + 1 = 1.
2. Перемножим модули операндов, порядок перемножения определяется нумерацией цифр множителя:
1-й способ
0,1010 0,1010
х 0,1101 х 0,1101
<img width=«39» height=«12» src=«ref-2_1109429701-97.coolpic» v:shapes="_x0000_s1128"><img width=«27» height=«12» src=«ref-2_1109429798-92.coolpic» v:shapes="_x0000_s1127"> 4,3,2,1 номера цифр множителя 1,2,3,4
1010 1010
0000 1010
+1010 + 0000
1010 1010
0,10000010 0,10000010
После округления приписываем к модулю знак произведения, полученный на первом этапе умножения.
<img width=«14» height=«2» src=«ref-2_1109429627-74.coolpic» v:shapes="_x0000_s1129">Ответ: [X3]пр = 1,0000010 ~ 1,10000.
Первый способ часто называют умножением младшими разрядами вперед, а второй — умножением старшими разрядами вперед.
Умножение чисел с плавающей запятой
Если имеем два сомножителя, заданные в нормальной форме Х1 = m1 10p1 и Х2 = m2 10p2, то их произведение определяется следующим образом:
Х1 Х2 = m1 m2 10p1+р2.
Анализ этого соотношения показывает, что умножение чисел в машинах с плавающей запятой производится в четыре этапа:
1. Определение знака произведения путем сложения по модулю два знаковых цифр мантисс сомножителей.
2. Перемножение модулей мантисс сомножителей по правилам для дробных чисел с фиксированной запятой.
3. Определение порядка произведения путем алгебраического сложения порядков сомножителей с использованием либо дополнительного, либо обратного модифицированного кода.
4. Нормализация результата и округление мантиссы в случае необходимости. Поскольку сомножители обязательно являются нормализованными числами, то де нормализация произведения возможна только на разряд и только вправо.
ПРИМЕР. Перемножить числа с плавающей запятой.
Множимое [X1]пр = 0 101; 1,10101
Множитель [X2]пр = 0 100; 1,11001
Решение.
1. Знак произведения 1 + 0 = 1.
2. Перемножаем модули мантисс:
1-й шаг ,0000 0000 — нулевая сумма
<img width=«127» height=«2» src=«ref-2_1109429964-92.coolpic» v:shapes="_x0000_s1116"> +,0000 1010 — 1-е частичное произведение
2-й шаг ,0000 1010 — 2-я сумма
+ ,0000 0000 — 2-е частичное произведение
3-й шаг ,0000 1010 — 3-я сумма
+ ,0010 1000 — 3-е частичное произведение
4-й шаг ,0011 0010 — 4-я сумма
+ ,0101 0000 — 4-е частичное произведение
, 1000 0010 — модуль произведения мантисс.
Находим порядок произведения:
продолжение
--PAGE_BREAK-- [р1]мод= 00,101
· доп
[р2]мод= 11,101
доп
<img width=«194» height=«2» src=«ref-2_1109428747-83.coolpic» v:shapes="_x0000_s1130">
[р3]мод= 100, 010
<img width=«2» height=«31» src=«ref-2_1109430139-76.coolpic» v:shapes="_x0000_s1131"> доп
<img width=«70» height=«12» src=«ref-2_1109430215-105.coolpic» v:shapes="_x0000_s1136">
теряется
Производим округление мантиссы произведения.
<img width=«62» height=«15» src=«ref-2_1109430320-125.coolpic» v:shapes="_x0000_s1133"><img width=«50» height=«14» src=«ref-2_1109430445-121.coolpic» v:shapes="_x0000_s1132">Ответ: [X3]пр = [Х1 Х2]пр = 0 010 ; 1 100
порядок мантисса
Прямой, обратный и дополнительный коды. Модифицированный код.
<img width=«12» height=«40» src=«ref-2_1109430566-114.coolpic» v:shapes="_x0000_s1137">Введем определение прямого, обратного и дополнительного кодов. Рассмотрим двоичное число <img width=«124» height=«24» src=«ref-2_1109430680-240.coolpic» v:shapes="_x0000_i1143"> В соответствии с изложенным выше число Rкодируется следующим образом:
0 <img width=«76» height=«24» src=«ref-2_1109430920-170.coolpic» v:shapes="_x0000_i1144"><img width=«40» height=«19» src=«ref-2_1109431090-125.coolpic» v:shapes="_x0000_i1145">
R= 1 <img width=«76» height=«24» src=«ref-2_1109430920-170.coolpic» v:shapes="_x0000_i1146"><img width=«40» height=«19» src=«ref-2_1109431385-125.coolpic» v:shapes="_x0000_i1147">
<img width=«21» height=«41» src=«ref-2_1109431510-133.coolpic» v:shapes="_x0000_s1138">или, в более общем случае, если <img width=«40» height=«19» src=«ref-2_1109431643-121.coolpic» v:shapes="_x0000_i1148">,
0 <img width=«71» height=«24» src=«ref-2_1109431764-156.coolpic» v:shapes="_x0000_i1149"> <img width=«44» height=«21» src=«ref-2_1109431920-134.coolpic» v:shapes="_x0000_i1150">
R= <img width=«35» height=«19» src=«ref-2_1109432054-113.coolpic» v:shapes="_x0000_i1151"> <img width=«71» height=«24» src=«ref-2_1109431764-156.coolpic» v:shapes="_x0000_i1152"> <img width=«44» height=«21» src=«ref-2_1109432323-132.coolpic» v:shapes="_x0000_i1153">
Так как <img width=«43» height=«27» src=«ref-2_1109432455-155.coolpic» v:shapes="_x0000_i1154">, эти соотношения можно переписать таким образом:
<img width=«21» height=«40» src=«ref-2_1109432610-134.coolpic» v:shapes="_x0000_s1140"> <img width=«16» height=«17» src=«ref-2_1109432744-91.coolpic» v:shapes="_x0000_i1155">, <img width=«40» height=«19» src=«ref-2_1109431090-125.coolpic» v:shapes="_x0000_i1156">
<img width=«35» height=«25» src=«ref-2_1109432960-147.coolpic» v:shapes="_x0000_i1157">= <img width=«69» height=«27» src=«ref-2_1109433107-188.coolpic» v:shapes="_x0000_i1158"> <img width=«44» height=«21» src=«ref-2_1109432323-132.coolpic» v:shapes="_x0000_i1159">
Представление чисел в соответствии с данной формулой называется прямым кодом числа <img width=«19» height=«19» src=«ref-2_1109433427-95.coolpic» v:shapes="_x0000_i1160">
<img width=«21» height=«41» src=«ref-2_1109433522-132.coolpic» v:shapes="_x0000_s1141">Если <img width=«40» height=«19» src=«ref-2_1109433654-118.coolpic» v:shapes="_x0000_i1161">, то формула <img width=«25» height=«25» src=«ref-2_1109433772-117.coolpic» v:shapes="_x0000_i1162"> перепишется в таком виде:
<img width=«16» height=«17» src=«ref-2_1109432744-91.coolpic» v:shapes="_x0000_i1163">, <img width=«40» height=«19» src=«ref-2_1109431090-125.coolpic» v:shapes="_x0000_i1164">
<img width=«35» height=«25» src=«ref-2_1109432960-147.coolpic» v:shapes="_x0000_i1165">= <img width=«44» height=«27» src=«ref-2_1109434252-155.coolpic» v:shapes="_x0000_i1166"> <img width=«44» height=«21» src=«ref-2_1109432323-132.coolpic» v:shapes="_x0000_i1167">
Аналогичным образом кодируются и числа, модуль которых не меньше единицы.
Пример: Записать числа в прямом коде:
<img width=«107» height=«48» src=«ref-2_1109434539-356.coolpic» v:shapes="_x0000_i1168"> <img width=«105» height=«51» src=«ref-2_1109434895-383.coolpic» v:shapes="_x0000_i1169">
Из равенства
<img width=«148» height=«21» src=«ref-2_1109435278-240.coolpic» v:shapes="_x0000_i1170">
следует, что операцию вычитания yиз xможно заменить операцией сложения S-yи х с последующим вычитанием из результата величины S
.
продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике
Реферат по информатике
Разработка приложения для Windows, моделирующего игру Нечетный и Четный
3 Сентября 2013
Реферат по информатике
Разработать программу, моделирующую игру Морской бой
18 Июня 2015
Реферат по информатике
Операции многократной точности операции с длинными числами
18 Июня 2015
Реферат по информатике
Метод Гаусса для расчета электрических цепей
3 Сентября 2013