ahhh, ok, capito, era piu' facile di quello che pensavo, credevo fosse chissā quale mostruosa cosa...
cmq ho scritto un po' il codice ma non va...
mi da sempre lo stesso risultato X=65356
sara' per colpa di questo forse
5 n:\ciisem~1\lv1\4masch~1\maschera.c
warning: return type of `main' is not `int'
Codice:
#include <stdio.h>
int PIU_SIGNIFICATIVI(int A,int k);
int MENO_SIGNIFICATIVI(int A,int k);
void main()
{
int A,k,X;
short scelta;
puts("Digita un valore A");
scanf("%d,&A");
puts("Digita quanti bit vuoi estrarre (max 32)");
scanf("%d,&k");
puts("Digita se estrarre i bit piu' significativi o meno significativi");
puts("Piu' significativi [0]");
puts("Meno significativi [1]");
scanf("%ld,&scelta");
while ((scelta==0 || scelta==1))
{
puts ("Scelta errata, riprovare");
scanf("%ld,&scelta");
}
if (scelta==0)
X=PIU_SIGNIFICATIVI(A,k);
else if (scelta==1)
X=MENO_SIGNIFICATIVI(A,k);
printf("Risultato X=%d\n",X);
system("pause");
}
int PIU_SIGNIFICATIVI(int A,int k)
{
int mask;
short i;
//Creazione maschera
for (i=1;i<k;i++)
mask=mask*2;
mask--;
mask<<(sizeof(int)*8-k);
return mask&A;
}
int MENO_SIGNIFICATIVI(int A,int k)
{
short b;
int mask=0;
for(b=1;b<=k;b++)
mask=mask<<1|1;
return mask&A;
}
manco il while va, esce il risultato qualsiasi numero metto
consigli?