La parte logica del Software consiste in una classe nominata Product che prende in input i due array ad int e applicherà il calcolo
in base ai metodi richiamati.
ATTRIBUTI:
array1 e array2 -- sono i valori di input da moltiplicare
N -- rappresenta il numero di bit
segno e booty -- servono alla funzione di moltiplicazione per decidere se considerare il segno o meno
bit_sign -- è utile per l'estensione del segno
risulta -- è un array che salva il risultato della moltiplicazione
b -- serve a capire quale estensione del segno adottare
Booth_arra -- è un array che salva la codifica di Booth
Bit_arra -- è un array che salva la codifica in bitpair
METODI:
Product(int arr1[],int arr2[],int n) -- è il costruttore
int [][]moltiplicazione() -- applica la moltiplicazione(),ritorna la matrice dei prodotti ancora da sommare
void somma(int Matrice[][],int a,int add1[],int add2[]) --è una funzione che si occupa della somma degli array della matrice,chiama se stessa(ricorsivamente) finchè le somme non sono finite
int[] addLast(int add1[],int add2[]) -- serve a sommare due valori,torna il valore risultato
converte un array,che rappresenta un binario o positivo o negativo;ne torna l'array convertito
int[] conversione(int[] riga) -- è utile a convertire un array,che rappresenta un valore binario o negativo o positivo;
ritorna il valore convertito
int[] getRisulta()-- torna il valore risultato
Booth() -- serve a convertire array2 nella codifica di Booth
void openBooth() -- assegna a true alcuni i valori booleani per avviare la moltiplicazione considerando i -1 e +1 che con il semplice prodotto naturale non avrebbe
void closeBooth()-- assegna i valori booleani a false
void bitPair() -- serve a convertire array2 nella codifica in bitpair
int[] leftShift(int[] riga) -- applica uno shift per moltiplicare per due
int[] getBitarra() -- torna l'array con la codifica in bitpair
Le funzioni principali sono: la funzione di "moltiplicazione()" e quella di somma(int[],int[],int,int[][]);
Moltiplicazione e somma sono metodi fondamentali per la riuscita di tutti e tre gli algoritmi.
I risultati dei prodotti vengono conservati in una matrice; successivamente la somma per colonne degli array
di questa matrice darà luogo all'array result, contenente il risultato.
La somma consiste nel ripetere più volte la somma fra due righe della Matrice fino a quando queste non saranno esaurite.
Algoritmi Booth e BitPair:
Il metodo Booth() si occupa della conversione del secondo array di input, dopodichè viene chiamata la funzione
moltiplicazione() e quindi somma(...) stavolta stando attenti a eventuali conversioni nei prodotti.
int[] conversione(int[]) è infatti un metodo di supporto a tale elaborazione.
Il metodo Bitpair() convertirà l'array prima convertito dal metodo Booth(), dopodichè il problema sarà rimandato
al metodo moltiplicazione, stavolta però stando attenti a eventuali shift(int[] leftShift(int[]).
Il metodo di moltiplicazione è perciò quello più complesso è articolato.
Sono state costruite delle sottoclassi ad hoc, derivate della classe "Product", per conservare i valori che dovranno poi
essere presentati nella parte grafica dell'applicazione.