Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo usar una matriz para completar la multiplicación de dos números enteros positivos muy largos

Cómo usar una matriz para completar la multiplicación de dos números enteros positivos muy largos

// Este programa implementa la operación de multiplicación de dos números enteros grandes. Nota: Los números enteros se representan en binario. Es decir, cada bit está representado por 0 o 1

//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)

{

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';

}

}

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)

{

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;

}

}

}