Ecco il testo dell'esercizio:
codice:
Scrivere una function C per eseguire l'addizione aritmetica in base 2 mediate gli operatori bitwise
Ed ecco il codice del programma, mi dà errori nelle void...consigli??
codice:
#include <stdio.h>
#include <stdlib.h>
#define MAX_BIT 7
void somma_binaria (int[], int[], int[]);
void bitXOR (int[], int[], int[]);
void bitAND (int[], int[], int[]);
void leftSHIFT(int[], int);
void main ()
{
int i,j,z, op1[MAX_BIT] , op2[MAX_BIT], risultato[MAX_BIT];
printf("Inserire i codici binari da addizionare (MAX 7 BIT):\n");
puts("Primo operatore=");
for (i=0;i<MAX_BIT;i++){
printf("\n Inserire bit numero %d: ",i+1);
scanf("%d",&op1[i]);}
puts("Secondo operatore=");
for (j=0;j<MAX_BIT;j++){
printf("\n Inserire bit numero %d: ",j+1);
scanf("%d",&op2[j]);}
puts("Somma dei seguenti bit: ");
for (i=0;i<MAX_BIT;i++){
printf("%d",op1[i]);}
puts(" +\n");
for (j=0;j<MAX_BIT;j++){
printf("%d",op2[j]);}
somma_binaria(op1[MAX_BIT],op2[MAX_BIT], risultato[MAX_BIT]);
puts("Ecco il risultato: \n");
for (z=0;z<MAX_BIT;z++){
printf("%d",risultato[z]);}
fflush(stdin);
getchar();
}
void bitXOR(int x[], int y[],int xor[MAX_BIT])
{
int i;
for(i=0; i<MAX_BIT; i++)
{if (x[i]==y[i])
xor[i]=0;
else
xor[i]=1;}
}
void bitAND(int x[], int y[],int and[MAX_BIT])
{
int i;
for(i=0; i<MAX_BIT; i++)
{
if (x[i]==1 && y[i]==1)
and[i]=1;
else
and[i]=0;}
}
void leftSHIFT(int x[], int n)
{
int i;
for (i=0;i<MAX_BIT;i++)
x[i]=x[i-n]; x[i-n]=0;
}
void somma_binaria(int x[], int y[], int sum[MAX_BIT])
{
int i,j,z,rip[MAX_BIT];
for (z=0;z<MAX_BIT;z++){
rip[z]=1;}
for(i=0;i<MAX_BIT;i++)
{
while (rip[i]>0) {
sum[i] = bitXOR(x[i],y[i],sum[i]);
rip[i] = bitAND(x[i],y[i],rip[i]);
rip[i] = leftSHIFT(rip[i],1);
x[i] = sum[i]; y[i] = rip[i]; }
}
}