This is a Java Program to implement Booth Algorithm. This is a program to compute product of two numbers by using Booth’s Algorithm. This program is implemented for multiplying numbers in the range -7 to 7. However same principle can be extended to other numbers too.
Here is the source code of the Java program to implement Booth Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
** Java Program to Implement Booth Algorithm
**/
import java.util.Scanner;
/** Class Booth **/
public class Booth
{
public static Scanner s = new Scanner(System.in);
/** Function to multiply **/
public int multiply(int n1, int n2)
{
int[] m = binary(n1);
int[] m1 = binary(-n1);
int[] r = binary(n2);
int[] A = new int[9];
int[] S = new int[9];
int[] P = new int[9];
for (int i = 0; i < 4; i++)
{
A[i] = m[i];
S[i] = m1[i];
P[i + 4] = r[i];
}
display(A, 'A');
display(S, 'S');
display(P, 'P');
System.out.println();
for (int i = 0; i < 4; i++)
{
if (P[7] == 0 && P[8] == 0);
// do nothing
else if (P[7] == 1 && P[8] == 0)
add(P, S);
else if (P[7] == 0 && P[8] == 1)
add(P, A);
else if (P[7] == 1 && P[8] == 1);
// do nothing
rightShift(P);
display(P, 'P');
}
return getDecimal(P);
}
/** Function to get Decimal equivalent of P **/
public int getDecimal(int[] B)
{
int p = 0;
int t = 1;
for (int i = 7; i >= 0; i--, t *= 2)
p += (B[i] * t);
if (p > 64)
p = -(256 - p);
return p;
}
/** Function to right shift array **/
public void rightShift(int[] A)
{
for (int i = 8; i >= 1; i--)
A[i] = A[i - 1];
}
/** Function to add two binary arrays **/
public void add(int[] A, int[] B)
{
int carry = 0;
for (int i = 8; i >= 0; i--)
{
int temp = A[i] + B[i] + carry;
A[i] = temp % 2;
carry = temp / 2;
}
}
/** Function to get binary of a number **/
public int[] binary(int n)
{
int[] bin = new int[4];
int ctr = 3;
int num = n;
/** for negative numbers 2 complment **/
if (n < 0)
num = 16 + n;
while (num != 0)
{
bin[ctr--] = num % 2;
num /= 2;
}
return bin;
}
/** Function to print array **/
public void display(int[] P, char ch)
{
System.out.print("\n"+ ch +" : ");
for (int i = 0; i < P.length; i++)
{
if (i == 4)
System.out.print(" ");
if (i == 8)
System.out.print(" ");
System.out.print(P[i]);
}
}
/** Main function **/
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Booth Algorithm Test\n");
/** Make an object of Booth class **/
Booth b = new Booth();
/** Accept two integers **/
System.out.println("Enter two integer numbers\n");
int n1 = scan.nextInt();
int n2 = scan.nextInt();
int result = b.multiply(n1, n2);
System.out.println("\n\nResult : "+ n1 +" * "+ n2 +" = "+ result);
}
}
Booth Algorithm Test Enter two integer numbers 7 -7 A : 0111 0000 0 S : 1001 0000 0 P : 0000 1001 0 P : 1100 1100 1 P : 0001 1110 0 P : 0000 1111 0 P : 1100 1111 1 Result : 7 * -7 = -49
Related posts:
Java Program to Implement Vector API
Mệnh đề Switch-case trong java
Java Program to Find Nearest Neighbor for Dynamic Data Set
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
Java Program to add two large numbers using Linked List
Transaction Propagation and Isolation in Spring @Transactional
The Spring @Controller and @RestController Annotations
Lớp TreeMap trong Java
Automatic Property Expansion with Spring Boot
Jackson Date
Introduction to Spring Method Security
Java Program to Implement JobStateReasons API
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Spring Cloud – Bootstrapping
Java Program to Check if a Point d lies Inside or Outside a Circle Defined by Points a, b, c in a Pl...
Create Java Applet to Simulate Any Sorting Technique
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Jackson – Marshall String to JsonNode
Xây dựng ứng dụng Client-Server với Socket trong Java
Servlet 3 Async Support with Spring MVC and Spring Security
ETags for REST with Spring
Introduction to Spliterator in Java
Java Program to Implement Stack API
Java Program to Implement LinkedHashSet API
Stack Memory and Heap Space in Java
Converting a Stack Trace to a String in Java
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Java Program to Represent Graph Using Linked List
Testing an OAuth Secured API with Spring MVC
Java Program to Perform the Unique Factorization of a Given Number
A Guide to the ResourceBundle
Command-Line Arguments in Java