Арифметические логические устройства (АЛУ).

Сумматор

  A     B Pn Pn-1

 


Выход переполнения

 


A B Pn-1   Pn

 

 

  AB B   A
Pn-1    
   

 

= Pn-1AB + B + Pn-1 + A = ( B + A ) + Pn-1(AB + )

 

 

Pn AB B   A
Pn-1  
     

 

Pn = Pn-1B + Pn-1A + AB = Pn-1(A + B) + AB

 

Чтобы реализовать суммирование большего число элементов, надо организовать последовательное сложение.

 

Скорость небольшая, сдвиг идет последовательно.

Еще один способ – сделать больше входов в сумматоре, но это материально более невыгодно. Третий способ – комбинированный.

 

Отрицание.

Через добавленный код – старший бит делается единицей.

 

"4" – 0100 1011 – "-4"

 

"3" – 0011 1100 – "-3"

 

0000 - 0 1111 - -0

0001 - 1 1110 - -1

0010 - 2 1101 - -2

0011 - 3 1100 - -3

0100 - 4 1011 - -4

0101 - 5 1010 - -5

0110 - 6 1001 - -6

0111 - 7 1000 - -7

 

Добавленный код – "+1":

 

1111 - -1

1110 - -2

1101 - -3

1100 - -4

1011 - -5

1010 - -6

1001 - -7

 

1000 - -8

 

Если "-" числа представлять в виде добавленного кода, их можно просто складывать.

 

Если подаем 0, вход В не инвертируется, выполняется сложение. Если подаем 1 – имеем инвертированный вход В+1 => добавленный код

Помимо сумматора необходим регистр сдвига.

 

A0 ALU Q0 A1 A2 Q1 A3 Q2 B0 Q3 B1 B2 Q4 B3 Q5   L0 Q6 L1 Q7 L2 L3 P