ALGORITMO DE BOOTH
Enviado por darwin19891 • 20 de Mayo de 2013 • 3.045 Palabras (13 Páginas) • 521 Visitas
#include<iostream>
using namespace std;
//*******************FUNCION PARA NUMERO POSITIVO A BINARIO********//
void binariopos(int N,int A[100],int n);
//*****************************************************************//
//*******************FUNCION PARA NUMERO NEGATIVO A BINARIO********//
void binarioneg(int N,int A[100],int n);
//*****************************************************************//
//*******************SUMA DOS NUMEROS EN BINARIO*******************//
void sumar(int A[100],int B[100],int bits);
//*****************************************************************//
//---------------------------------------------------------------//
//***************************PROGRAMA PRINCIPAL******************//
//---------------------------------------------------------------//
int main()
{
while(1)
{
system("cls");
system("color 4F");
///***Primer digito fondo y el segundo letra Color*********//
int mdo,mdr; //*****Numeros Ingresados****//
int MDO_10[100]; //***MDO EN BINARIO***//
int MDO_01[100]; //***MDO EN BINARIO***//
int MDR[100]; //***MDR EN BINARIO***//
int Aux[100]; //**AUXILIAR PARA NUMERO BINARIO**//
int aux1,aux2,aux; //**AUXILIARES PARA LOS BITS**//
int bits1=0,bits2=0,bits; //**BITS DE CADA NUMERO**//
int AC[100]; //*REGISTROS ACUMULADOR*//
int QN=0; //*BIT ADICIONAL*//
cout<<endl<<"\t\t\tALGORITMO DE BOOTH";
//********************************************************//
cout<<endl<<endl<<" ->> MULTIPLICANDO :";
cin>>mdo;
//****************************NUMERO DE BITS DEL MDO*************//
aux=mdo;
do
{
aux=aux/2;
bits1++;
}
while(aux!=0);
//***********************************************************//
cout<<endl<<" ->> MULTIPLICADOR :";
cin>>mdr;
//****************************NUMERO DE BITS DEL MDO***************//
aux=mdr;
do
{
aux=aux/2;
bits2++;
}
while(aux!=0);
//**************************************************//
//******************MAYOR NUMERO BITS*****************//
if(bits1>bits2)
bits=bits1;
else
bits=bits2;
bits=bits+1;
//*****************************************************//
//*******MUESTRA EL VALOR DEL MDO DEPENDIENDO DEL SIGNO***********//
cout<<endl<<endl<<endl<<" ->> MULTIPLICANDO :";
if(mdo<0)
{
binarioneg(mdo,MDO_01,bits);
//*** PASO A BINARIO EL MDO_01 ***//
for(int i=0;i<bits;i++)
cout<<MDO_01[i];
}
else
{
binariopos(mdo,MDO_10,bits);
//*** PASO A BINARIO EL MDO_10 ***//
for(int i=0;i<bits;i++)
cout<<MDO_10[i];
}
//**************************************************//
//***TRUCO :MACENA EL MDO EN BINARIO DEPENDIENDO DEL SIGNO***//
if(mdo<0)
{
binariopos(mdo,MDO_10,bits);
binarioneg(mdo,MDO_01,bits);
}
else
{
binariopos(mdo,MDO_01,bits);
binarioneg(mdo,MDO_10,bits);
}
//************************//
//***MUESTRA EL VALOR DEL MDR DEPENDIENDO DEL SIGNO***********//
cout<<endl<<endl<<" ->> MULTIPLICADOR :";
if(mdr<0)
binarioneg(mdr,MDR,bits);
else
binariopos(mdr,MDR,bits);
for(int i=0;i<bits;i++)
cout<<MDR[i];
//********************//
//**********LLENA EL REGISTRO ACUMULADOR DE 0**********//
for(int i=0;i<bits;i++)
AC[i]=0;
//********************************//
//**************MUESTRA TITULOS DE BOOTH*********//
int a;
a=bits/2;
cout<<endl<<endl<<endl;
cout<<" ";
for(int i=0;i<bits;i++)
{
cout<<" ";
if(i==a)
cout<<"AC";
}
cout<<" ";//espacio
for(int i=0;i<bits;i++)
{
cout<<" ";
if(i==a)
cout<<"QR";
}
cout<<" QN";//espacio
cout<<" SC";//espacio
cout<<endl;
cout<<" ";
for(int i=0;i<bits;i++)
cout<<"_";
cout<<" ";//espacio
for(int i=0;i<bits;i++)
cout<<"_";
cout<<" __";//espacio
cout<<" __";//espacio
//**********************************************//
//***********************************************//
//****************************DESARROLLO DE BOTH*****************//
//***************************************************//
for(int SC=bits;SC>=0;SC--)
{
//****************MUESTRA DE DESARROLLO DE BOOTH**************//
cout<<endl<<endl;
...