Discussione: [C] Estrazione bit
View Single Post
Old 24-04-2007, 03:33   #4
k_mishima
Member
 
Iscritto dal: Jan 2007
Messaggi: 173
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?
k_mishima č offline   Rispondi citando il messaggio o parte di esso