И деления

Принципы аппаратной реализации операций умножения

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

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

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

 
 


+

+

Рис. 4.3 Алгоритм умножения чисел А и В

Правило перемножения целых двоичных чисел очень похоже на перемножение в столбик. Пусть заданы множимое А=и множитель В=. Перемножение их по известным правилам арифметики имеет вид

1 1 0

*

1 0 1

1 1 0

+ 0 0 0

1 1 0

1 1 1 1 0

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

В итоге получен тот же результат, что и перемножении вручную, то есть А*В = .

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

Операции Разряд множителя В Реализация
S – 0   0 0 0 + 1 1 0
S = S + A  
S   1 1 0
SHR 1   0 1 1 0
SHR 1   0 0 1 1 0 + 1 1 0
S = S + A  
S   1 1 1 1 0

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

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

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

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

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

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

4.4. Кодирование алфавитно – цифровой информации

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

В настоящее время широкое распространение получило кодирование символов с использованием однобайтовых ячеек памяти, которая может содержать 256 различных вариантов информации, отвечающей тому или иному символу. Это в полной мере перекрывает количество символов, содержащихся в алфавитах различных языков. Принцип кодирования символов состоит в том, что каждому символу в соответствии с принятой таблицей кодов ASCII соответствует определенное десятичное число. Затем это число переводится в двоичное. Например, выражение USSR 1917 будет храниться в памяти в восьми байтах

U S S R

01110010 11100010 11100010 11011001

1 9 1 7

11110001 11111001 11110001 11110111

а число –6.285 запишется в памяти в двоичном коде как

– 6. 2 8 5

01100000 11110110 01001011 11110010 11111000 11110101.


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



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