|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
ПРАВИЛА ВЫПОЛНЕНИЯ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙСЛОЖЕНИЕ чисел, представленных в двоичном коде, выполняется поразрядно, начиная с младшего разряда. В результате сложения двух первых кодов слагаемых X0, Y0 получается первый разряд суммы S0 и код переноса P0 в следующий разряд. В следующих разрядах код Si будет определяться с учетом переноса из соседнего младшего разряда: 7 0111 5 0101 + ── + ───── 12 1100 ОПЕРАЦИЯ ВЫЧИТАНИЯ в ЭВМ выполняется так же как и сложение, но при этом отрицательные числа представляются в дополнительном или обратном коде. Смысл перевода отрицательных чисел из прямого в дополнительный и обратный коды поясним на примере с десятичными числами. Допустим, требуется сложить числа X1=76 и X2=-58. Заменим код отрицательного слагаемого X2 его дополнением до 100, так чтобы [X2]доп=100+X2=42. Сложив числа X1+[X2]доп получим: Y=X1+[X2]доп=76+42=118 Отбрасывая 1 старшего разряда получим искомый результат 18. Равенство полученного результата истинному объясняется тем, что при формировании дополнительного кода к X2 мы прибавляли 100, а из результата вычитали 100 отбрасыванием старшего разряда. Y=X1+[X2]доп-100=X1+[X2+100]-100=76+[-58+100]-100=18 При записи двоичного числа в прямом коде в знаковом разряде ставится его знак (0 - плюс, 1 - минус), а само число записывается в естественной форме: X=1310 [X]пр=011012 X=-1310 [X]пр=111012 ДОПОЛНИТЕЛЬНЫЙ КОД отрицательных двоичных чисел получается заменой двоичных кодов во всех разрядах на взаимно обратные (0 на 1, 1 на 0). После этого к младшему разряду числа добавляется 1. В знаковом разряде отрицательного числа записывается 1. [-14]доп=[-01110]доп=[10001+1]=10010 Кроме дополнительного кода для представления отрицательных чисел используется ОБРАТНЫЙ КОД. В этом случае в знаковом разряде записывается 1, а в остальных разрядах цифры заменяются на взаимно обратные [-14]обр=[-01110]обр=10001 При выполнении арифметических операций с отрицательными числами производится поразрядное сложение слагаемых, начиная с младшего и кончая знаковым разрядом. Если используется дополнительный код, то возможная единица переноса из знакового разряда отбрасывается, при использовании обратного кода единица переноса знакового разряда суммируется с младшим разрядом полученной суммы. Результат вычисления получается в том коде, в каком были представлены слагаемые. Положительные числа в прямом, обратном и дополнительном кодах имеют одну и ту же форму записи. Например: 12 X1пр=0.1100 X1обр=0.1100 X1доп=0.1100 5 X2пр=0.0101 X2обр=1.1010 X2доп=1.1011 - ─── - ─────────── + ──────────── + ──────────── 7 Sпр= 0.0111 10.0110 10.0111 └──>──┘ <──┘ Sобр= 0.0111 Sдоп= 0.0111
Y=5-12=-7 X1обр=0.0101 X1доп=0.0101 X2обр=1.0011 X2доп=1.0100 + ──────────── + ──────────── Sобр= 1.1000 Sдоп= 1.1001 Sпр= -0.0111 Sпр= -0.0111
УМНОЖЕНИЕ ДВОИЧНЫХ ЧИСЕЛ, представленных в форме с фиксированной точкой, включает в себя определение знака и абсолютного значения произведения. Знаковый разряд произведения может быть получен суммированием знаковых разрядов сомножителей без формирования переноса (так называемое суммирование по модулю 2). Действительно, при совпадении цифр знаковых разрядов сомножителей (0 и 0, либо 1 и 1) их сумма по модулю 2 равна 0, т.е. соответствует знаковому разряду произведения двух сомножителей, имеющих одинаковые знаки; при несовпадении цифр знаковых разрядов эта сумма будет равна 1, что также соответ-ствует знаковому разряду произведения двух сомножителей с разными знаками. Абсолютное значение произведения получается путем перемножения чисел без учета их знаков (так называемого кодового умножения). Пусть производится умножение чисел 1310 =11012 и 1110 =10112 13 1101 X X 11 1011 ──── ───── 13 1101 + + 1101 13 0000 ──── 1101 143 ──────── Как видно из примера, в процессе выполнения операции умножения формируются частичные произведения (произведения множимого на цифры разрядов множителя), которые суммируются с соответствующими сдвигами друг относительно друга. В цифровых устройствах процессу суммирования частичных произведений придают последовательный характер: формируется одно из частичных произведений, к нему с соответствующим сдвигом прибавляется следующее частичное произведение, к полученной сумме прибавляется с соответствующем сдвигом очередное частичное произведение и т.д., пока не окажутся просуммированными все частичные произведения. Этот процесс суммирования можно начинать с младшего либо старшего частичного произведения. При умножении целых чисел для фиксации произведения в разрядной сетке должно предусматриваться число разрядов, равное сумме числа разрядов множимого и множителя. ДЕЛЕНИЕ ДВОИЧНЫХ ЧИСЕЛ. Будем рассматривать операцию алгебраического деления чисел, представленных в форме с фиксированной точкой. при этом выполнение операции содержит действия, связанные с определения модуля частного. Знак частного может быть найден тем же приемом, что и знак произведения в рассмотренной выше операции умножения с отделением знаковых разрядов. На рисунке 1 показана схема алгоритма нахождения частного положительных чисел a и b.
┌─────────────┐ │ S T A R T │ └──────┬──────┘ │ ┌1─────────┴──────────┐ │ c = a - b │ └──────────┬──────────┘ │<─────────────────────────────────────┐ 2──────/ \──────\ Нет │ < c>=0 >────────────────┐ │ \────── ──────/ │ │ \ / Да │ │ ┌3─────────┴──────────┐ ┌4─────────┴──────────┐ │ │Запись 1 в очередной │ │Запись 0 в очередной │ │ │из старших разрядов │ │из старших разрядов │ │ │ частного │ │ частного │ │ └──────────┬──────────┘ └──────────┬──────────┘ │ │ │ │ ┌5─────────┴──────────┐ ┌6─────────┴──────────┐ │ │ сдвиг влево c │ │ сдвиг влево c │ │ └──────────┬──────────┘ └──────────┬──────────┘ │ │ │ │ ┌7─────────┴──────────┐ ┌8─────────┴──────────┐ │ │ c = c - b │ │ c = c + b │ │ └──────────┬──────────┘ └──────────┬──────────┘ │ │<────────────────────────┘ │ 9────────/ \──────── │ / Сформированы все \ Нет │ < разряды частного? >───────────────────────────┘ \───────── ────────/ \ / Да ┌─────────┴──────────┐ │ S T O P │ └────────────────────┘ Рисунок 1. . Покажем выполнение операции на примере. Пусть после отделения знаковых разрядов модули делимого и делителя представляются соответственно числами a=0.10010 и b=0.10110. Встречающуюся в алгоритме операцию вычитания числа заменим прибавлением числа -b, представленного в дополнительном коде: (-b)доп=1.01010.
a 0.10010 0. 1 0 1 1 0 (-b)доп 1.01010 ──────────── + ─────── 0. 1 1 0 1 0 Частное c 1.11100 c < 0 ───┘ │ │ │ │ │ │ │ │ │ │ Сдвиг влево 1.11000 │ │ │ │ │ b 0.10110 │ │ │ │ │ + ─────── │ │ │ │ │ c 0.01110 c > 0 ──────┘ │ │ │ │ │ │ │ │ Сдвиг влево 0.11100 │ │ │ │ (-b)доп 1.01010 │ │ │ │ + ─────── │ │ │ │ c 0.00110 c > 0 ────────┘ │ │ │ │ │ │ Сдвиг влево 0.01100 │ │ │ (-b)доп 1.01010 │ │ │ + ─────── │ │ │ c 1.10110 c < 0 ──────────┘ │ │ │ │ Сдвиг влево 1.01100 │ │ b 0.10110 │ │ + ─────── │ │ c 0.00010 c > 0 ────────────┘ │ │ Сдвиг влево 0.00100 │ (-b)доп 1.01010 │ + ─────── │ c 1.01110 c < 0 ──────────────┘
Проверка: a=0,100102 = 0,562510 b=0,101102 = 0,687510 a/b=0,110102 = 0,812510 . Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.014 сек.) |