Cómo usar una matriz para completar la multiplicación de dos números enteros positivos muy largos
//Ejemplo: 100011 1011101//El programa primero ingresa el número a multiplicar y el número de dígitos del multiplicador, y luego solicita dinámicamente el valor largo en forma de caracteres Espacio para cada bit de un número entero. // Simule la implementación de la multiplicación por computadora convirtiendo la multiplicación de enteros en suma de enteros. #include lt; stdio.hgt; //desplaza el elemento de la matriz a la izquierda en x bits, con los bits bajos complementados con 0
void leftmove(char c[], int len, int x)
{
si(x==0)
devolver;
más
{
for(int i=0;ilt;x;i)
c[i len]='0';
}
}/// Mueva los elementos de la matriz hacia la derecha x bits y complete el bit alto con 0
void rightmove(char c[], intamp; len, int x)
{ p>
if( x==0)
return;
else
{
for(int i=len -1;igt;=0 ;i--)
{
c[i x]=c[i]
}
for(int j= 0; jlt; x; j )
{
c[j]='0';
}
} p>
len =x;
}
}// Simula una computadora para calcular la multiplicación de dos números desplazando la matriz hacia la izquierda o a la derecha, luego mueve cada bit Agregar para obtener el producto
void add(char a[], char s[], intamp; len)
{
int i;
int c=0; //alimentar
int temp;
for(i=len-1; igt; =0; i- -)
{
temp=(a[i]-'0') (s[i]-'0') c;
si( temp==1) p>
{
s[i]='1'
c=0; p>
if( temp==2)
{
s[i]='0'
c=1; >
if(i ==0)
{
for(int j=len-1;jgt;=0;j--) //Los bits altos son redondeado
{
s[j 1]=s[j]
}
s[j 1]='1; ';
len =1;
}
}
}