- •Глава 2
- •2.1 Принципы построения систем счисления
- •2.1.1 Непозиционные системы счисления
- •2.1.2 Позиционные системы счисления
- •2.1.3 Специальные системы счисления
- •2.1.4 Выбор системы счисления
- •2.2 Виды позиционных систем счисления
- •Десятичная система счисления.
- •Двоично-десятичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления.
- •Восьмеричная система счисления
- •2.3 Перевод целых и дробных чисел из одной системы счисления в другую
- •Перевод числа из любой сс в десятичную сс
- •Перевод чисел из десятичной сс в любую другую сс
- •Перевод шестнадцатеричных чисел в десятичную сс.
- •Преобразования чисел, удобных для устных расчетов
- •Переводы чисел из одной системы в другую
- •2.4 Арифметические основы эвм
- •Арифметические операции, выполняемые в позиционных сс
- •Контрольные вопросы
- •2.4.2 Алгебраическое представление двоичных чисел
- •Контрольные вопросы
2.4 Арифметические основы эвм
Арифметические операции, выполняемые в позиционных сс
Все операции в компьютере выполняются в арифметико-логическом устройстве (АЛУ). Числа, которые участвуют в операциях, называются операндами. Основная операция, которую выполняет АЛУ, операция сложения. Операции сложения в АЛУ выполняет функциональный узел –сумматор.
Операция вычитания заменяется сложением операндов в обратном или дополнительном кодах.
Операции умножения и деления сводятся к многократному сложению и переносам.
В вычислительной технике наибольшее применение имеет операция сложения. Вычисления выполняются по следующим правилам:
операция сложения выполняется поразрядно, начиная с младших разрядов в слагаемых;
в каждом одноименном разряде слагаемых суммируются соответствующие цифры и перенос из предыдущего разряда суммы;
если сумма цифр одноименных разрядов слагаемых и переноса меньше основания системы, то перенос в следующий разряд равен нулю, если равна или больше — то перенос равен единице.
Цифры суммы могут быть определены только последовательно, начиная с младших разрядов. Это имеет принципиальное значение, так как в соответствующих суммирующих схемах вычислительной машины операции суммирования также должны выполняться последовательно, а это существенно увеличивает время вычисления суммы.
Поразрядные операции.
Поразрядные операции — операции, которые осуществляются над одноименными разрядами чисел независимо от соседних разрядов. Рассмотрим некоторые из них.
Поразрядное дополнение (или операция получения инверсного кода) — операция, по которой набор х0 х1 х2 … хn превращается в набор … , где = 1 – xn, применяется для получения обратного кода отрицательного числа.
Поразрядное сложение двух чисел заключается в сложении одноименных разрядов чисел по модулю 2 в соответствии с правилом
0 0 = 0, 0 1 = 1, 1 0=1, 1 1=0;
применяется для сравнения двух чисел на равенство.
Поразрядное логическое сложение заключается в сложении одноименных разрядов двух чисел в соответствии с правилом
0 0 = 0, 0 1 = 1, 1 0= 1, 1 1 = 1, где символ означает логическое сложение.
Поразрядное логическое умножение заключается в умножении одноименных разрядов двух чисел в соответствии с правилом
0 ^ 0 = 0, 0 ^ 1= 0, 1 ^ 0 = 0, 1 ^ 1 = 1. где символ ^ означает логическое умножение.
Поразрядные операции логического сложения и умножения применяют для модификации команд и чисел.
Операции сдвига.
Операции сдвига заключаются в одновременном смещении цифр числа (набора) на фиксированное число разрядов влево и вправо. В ЭВМ используется сдвиг логический, циклический и арифметический.
Логический сдвиг — смещение всей числовой последовательности (слова), включая разряд знака, при котором в освободившиеся при сдвиге k разрядов устанавливаются нули.
Например, исходный набор х0 х1 х2 … хn при сдвиге на k разрядов вправо преобразуется в набор:
0 0….0 х0 х1 х2 … хn , где k — константа сдвига.
k
Циклический сдвиг — смещение всей числовой последовательности (слова), при котором цифры, выходящие за пределы разрядной сетки, снова вводятся в освобождающиеся позиции слова.
Арифметический сдвиг — сдвиг всей числовой последовательности (слова) без изменения позиции знака числа. Различают две разновидности арифметического сдвига: простой и модифицированный. Простой арифметический сдвиг эквивалентен умножению числа, представленного в определенной системе счисления, на основание этой системы счисления, возведенное в степень (положительную или отрицательную), равную величине сдвига (константе сдвига).
Простой арифметический сдвиг влево для чисел в разных кодах характеризуется следующими особенностями.
Для прямого кода влево сдвигается только цифровая часть числа, освобождающиеся младшие разряды заполняются нулями. Допустимая величина константы сдвига kд определяется числом подряд стоящих нулей после фиксированной запятой (точки).
Для дополнительного и обратного кодов влево сдвигается вся числовая последовательность, освобождающиеся младшие разряды для дополнительного кода заполняются нулями, для обратного — единицами. Для дополнительного кода выдвигающаяся единица из знакового разряда теряется, а для обратного кода должна быть направлена в младший разряд цифровой части (как для циклического сдвига влево). Допустимая величина константы сдвига kд определяется числом подряд стоящих единиц после запятой (точки).
Пример:
Выполнить простой арифметический сдвиг влево на один разряд чисел, заданных в разных кодах: х1 = 1.0011; х2 = 1.10001; xз = 1.1101.
Константа сдвига: kд = 2 kд=1 kд = 2
После сдвига влево получим: х1 = 1.0110; х2 = 1.0001; х3 = (1) 1.1011,
Простой арифметический сдвиг вправо для чисел в разных кодах характеризуется следующими особенностями.
Для прямого кода вправо сдвигается только цифровая часть числа.
Для дополнительного и обратного кодов вправо сдвигается вся числовая последовательность, цифра знакового разряда перемещается в старший цифровой разряд и в то же время восстанавливается в знаковом разряде.
При сдвиге вправо разряды чисел, выходящие за правую границу разрядной сетки, теряются. Так как число разрядов в разрядной сетке конечно, то в результате сдвигов может образоваться «машинный» нуль (исключением является результат неограниченного сдвига вправо отрицательного числа в дополнительном коде).
Пример:
Выполнить простой арифметический сдвиг вправо на один разряд чисел, заданных в разных кодах: х1 = 1.00110; х2 = 1.10110; х3 = 1.11010.
После сдвига вправо получим: х1'= 1.00011; х2∙ = 1.11011; х3' = 1.11101.
Модифицированный арифметический сдвиг используется для чисел с плавающей запятой (точкой). Для такого сдвига величина исходного числа после сдвига не изменяется, т. е. в этом случае наряду со смещением мантиссы числа одновременно изменяется и его порядок так, чтобы величина числа осталась без изменений.
Арифметические операции над числами в двоичной СС
Рассмотрим правила выполнения арифметических операций над одноразрядными числами.
Правило сложения 0 + 0 = 00 0 + 1 = 01 1 + 0 = 01 1 + 1 = 10 Перенос 1 в ст. разряд |
Правило вычитания 0 – 0 = 0 1 – 0 = 1 1 – 1 = 0 1 0 – 1 = 1 Заем 1 из ст. разряда |
Правило умножения 0 х 0 = 0 0 х 1 = 0 1 х 0 = 0 1 х 1 = 1 |
Правило сложения по модулю 2 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 |
Рассмотрим несколько примеров выполнения арифметических действий над многоразрядными числами в двоичной СС.
Примеры.
Сложить два двоичных числа А=10100110 и В=00101111 (16610 + 4710):
Сложение двух многоразрядных двоичных чисел проводится поразрядно с учетом единиц переполнения от предшествующих разрядов.
Перенос в ст.разр. 1 1 1 1 11
1-е слагаемое 1 0 1 0 0 1 1 0 166
2-е слагаемое + 0 0 1 0 1 1 1 1 + 47
Сумма 1 1 0 1 0 1 0 1 215
Проверка: 110101012 = 1•27+1•26+0•25+1•24+0•23+1•22+0•21+1•20 =21510
Вычесть два двоичных числа А=10101 и В=1010 (16610 - 4710):
Вычитание многоразрядных двоичных чисел, аналогично сложению, начинается из младших разрядов. Если занять единицу в старшем разряде, образуются две единицы в младшем разряде.
Заем из ст.разр 1 1 1 1 1 1 1 1
Число 1 0 1 0 0 1 1 0 166
Вычитаемое - 0 0 1 0 1 1 1 1 - 47
Разность 1 1 1 0 1 1 1 119
Проверка: 11101112 = 1•26+1•25+1•24+0•23+1•22+1•21+1•20 =11910
Операция сложения в АЛУ выполняется типовым узлом – сумматором. Он состоит из отдельных логических схем, называемых одноразрядными сумматорами. Связь между отдельными одноразрядными сумматорами реализуется с помощью цепей переноса в направлении от младших разрядов к старшим.
Операнды А и В поступают с выходов регистров операндов. Комбинационный сумматор строится на логических элементах и не обладает свойством запоминания информации, поэтому результат сложения записывается в регистр результатов.
Умножить два числа 10111.012 и 10.112 (23.2510 х 2.7510):
Умножение представляет собой многоразовое сложение промежуточных сумм и сдвиги.
Множимое 10111.01 23.25 х 2.75 = 63.937510
Множитель х 10.11
1011101
1011101
1011101___
Произведение 111111.1111
Проверка: 111111.11112=1∙25+1∙24+1∙23+1∙22+1∙21+1∙20+1∙2-1+1∙2-2+1∙2-3+1∙2-4=
= 32+16+8+4+2+1+0,5+0.25+0.125+0.0625=63.937510
Разделить число 1101011102 на 1010 2 (43010 : 1010):
Процесс деления состоит из повторяющихся операций вычитания.
Делимое 110101110 |_1010
Делитель - 1010 101011 -частное от деления
1101
- 1010
1111
- 1010
1010
-1010
0000
Проверка: 430 : 10 = 43(10)
Действительно: 101011 = 1 • 25 + 0 • 26 + 1 • 25 + 0 • 22 + 1 • 21 + 1 • 20 = 43.