logo

Booth'un Çarpma Algoritması

Kabin algoritması, sırasıyla 2'nin tümleyenindeki iki işaretli ikili tamsayıyı çarpmamıza olanak sağlayan bir çarpma algoritmasıdır. Ayrıca çarpma işleminin performansını hızlandırmak için de kullanılır. Aynı zamanda çok verimlidir. Çarpandaki 0'ların dizi bitleri üzerinde çalışır, ek bit gerektirmez, yalnızca en sağdaki dize bitlerini ve 1'lerden oluşan bir diziyi çarpan bit ağırlığı 2'de kaydırırk2 kiloya kadarMşu şekilde düşünülebilir 2k+ 1- 2M .

Booth Algoritmasının resimli gösterimi aşağıdadır:

Çardak

Yukarıdaki akış şemasında başlangıçta AC Ve Qn + 1 bitler 0'a ayarlanmıştır ve SC toplam bit setini temsil eden bir sıra sayacıdır N, çarpandaki bit sayısına eşittir. Var BR temsil eden bitleri çarpın, ve QR şunu temsil eder: çarpan bitleri . Bundan sonra çarpanın Q olarak iki bitiyle karşılaştık.Nve Qn + 1burada Qn, QR'nin son bitini temsil eder ve Qn + 1Qn'nin 1 artırılmış bitini temsil eder. Çarpanın iki bitinin 10'a eşit olduğunu varsayalım; bu, çarpanı AC akümülatöründeki kısmi çarpımdan çıkarmamız ve ardından aritmetik kaydırma işlemini (ashr) gerçekleştirmemiz gerektiği anlamına gelir. Çarpanlardan ikisi 01'e eşitse, AC akümülatöründeki kısmi çarpıma çarpanı toplamamız ve ardından aritmetik kaydırma işlemini yapmamız gerektiği anlamına gelir ( Aşr ), içermek Qn + 1 . Aritmetik kaydırma işlemi, Booth'un algoritmasında AC ve QR bitlerini birer birer sağa kaydırmak ve AC'deki işaret bitini değiştirmeden bırakmak için kullanılır. Ve dizi sayacı, hesaplama döngüsü tekrarlanana kadar bit sayısına (n) eşit olacak şekilde sürekli olarak azaltılır.

Stand Algoritması'da çalışıyor

  1. Çarpan ve Çarpan ikili bitlerini sırasıyla M ve Q olarak ayarlayın.
  2. Başlangıçta AC ve Q'yu ayarladık.n + 1değeri 0 olarak kaydeder.
  3. SC, Çarpan bit sayısını (Q) temsil eder ve bit sayısına (n) eşit olana kadar sürekli olarak azaltılan veya 0'a ulaşan bir sıra sayacıdır.
  4. Bir Qn, Q'nun son bitini temsil eder ve Qn+1Qn'nin bitinin 1 artırıldığını gösterir.
  5. Kabin algoritmasının her döngüsünde QNve Qn + 1bitler aşağıdaki parametrelerde şu şekilde kontrol edilecektir:
    1. İki bit Q olduğundaNve Qn + 100 veya 11 ise, AC kısmi çarpımına aritmetik sağa kaydırma işlemini (ashr) yaparız. Ve Qn ve Q'nun bitlerin + 11 bit artırılır.
    2. Eğer Q'nun bitleriNve Qn + 101 olarak gösterildiğinde, çarpan bitler (M) AC'ye (Akümülatör kaydı) eklenecektir. Daha sonra AC ve QR bitlerine 1’er sağa kaydırma işlemini gerçekleştiriyoruz.
    3. Eğer Q'nun bitleriNve Qn + 110 olarak gösterildiğinde, çarpan bitler (M) AC'den (Akümülatör kaydı) çıkarılacaktır. Daha sonra AC ve QR bitlerine 1’er sağa kaydırma işlemini gerçekleştiriyoruz.
  6. Kabin algoritmasında n - 1 bitine ulaşana kadar işlem sürekli olarak devam eder.
  7. Çarpma ikili bitlerinin sonuçları AC ve QR kayıtlarında saklanacaktır.

Booth Algoritması'nda kullanılan iki yöntem vardır:

piton __isim__

1. RSC (Sağa Kaydırma Dairesel)

İkili sayının en sağdaki bitini kaydırır ve daha sonra ikili bitlerin başına eklenir.

Çardak

2. RSA (Sağa Kaydırma Aritmetiği)

İki ikili biti toplar ve ardından sonucu 1 bitlik sağa kaydırır.

java program döngüsü

Örnek : 0100 + 0110 => 1010, ikili sayıyı ekledikten sonra her biti 1 sağa kaydırır ve sonucun ilk bitini yeni bitin başına koyar.

Örnek: Booth'un çarpma algoritmasını kullanarak 7 ve 3 sayılarını çarpın.

Yıllar . Burada 7 ve 3 olmak üzere iki sayımız var. Öncelikle 7 ve 3'ü 7 = (0111) ve 3 = (0011) gibi ikili sayılara dönüştürmemiz gerekiyor. Şimdi 7'yi (ikili 0111'de) çarpan (M) olarak ve 3'ü (ikili 0011'de) çarpan (Q) olarak ayarlayın. Ve SC (Sıra Sayısı) bit sayısını temsil eder ve burada 4 bitimiz var, dolayısıyla SC = 4'ü ayarlayın. Ayrıca kabin algoritmalarının yineleme döngülerinin sayısını gösterir ve ardından döngüler SC = SC - 1 kez çalıştırılır.

QN Qn + 1 M = (0111)
M' + 1 = (1001) ve Çalışma
AC Q Qn + 1 SC
1 0 İlk 0000 0011 0 4
Çıkar (M' + 1) 1001
1001
Aritmetik Sağa Kaydırma işlemlerini gerçekleştirme (ashr) 1100 1001 1 3
1 1 Aritmetik Sağa Kaydırma işlemlerini gerçekleştirme (ashr) 1110 0100 1 2
0 1 Toplama (A + M) 0111
0101 0100
Aritmetik sağa kaydırma işlemini gerçekleştirin 0010 1010 0 1
0 0 Aritmetik sağa kaydırma işlemini gerçekleştirin 0001 0101 0 0

Booth Çarpma Algoritmasının sayısal örneği 7 x 3 = 21 ve 21'in ikili gösterimi 10101'dir. Burada sonucu ikili 00010101 olarak alıyoruz. Şimdi bunu (000010101) gibi ondalık sayıya dönüştürüyoruz.10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.

Java sanal makinesi

Örnek: Booth'un çarpma algoritmasını kullanarak 23 ve -9 sayılarını çarpın.

Burada M = 23 = (010111) ve Q = -9 = (110111)

QNQn + 1 M = 0 1 0 1 1 1
P' + 1 = 1 0 1 0 0 1
ACQQn + 1SC
İlk olarak 000000 110111 0 6
1 0 M'yi çıkar 101001
101001
Aritmetik sağa kaydırma işlemini gerçekleştirin 110100 111011 on beş
on bir Aritmetik sağa kaydırma işlemini gerçekleştirin 111010 011101 1 4
on bir Aritmetik sağa kaydırma işlemini gerçekleştirin 111101 001110 1 3
0 1 Toplama (A + M) 010111
010100
Aritmetik sağa kaydırma işlemini gerçekleştirin 001010 000111 0 2
1 0 M'yi çıkar 101001
110011
Aritmetik sağa kaydırma işlemini gerçekleştirin 111001 100011 on bir
on bir Aritmetik sağa kaydırma işlemini gerçekleştirin 111100 110001 1 0

Qn + 1 = 1, çıkışın negatif olduğu anlamına gelir.

Dolayısıyla 23 * -9 = 111100110001'in 2'ye tümleyeni => (00001100111)