Forum - C/C++
- Mascheramento lettura bit da byte
pistilloi (Normal User)
Newbie
Messaggi: 9
Iscritto: 03/12/2010
Codice sorgente - presumibilmente C++
#include<stdio.h>
//#define TRUE 1
//#define FALSE 0
typedef enum boolean{ FALSE = 0, TRUE = 1} bool ;
/*La funzione, legge il bit numero n a partire
* dal meno significativo, degli 8 bit del dato
* char*/
bool leggibit( char dato, char n)
{
char buffer = 0 ; /*il buffer farà da maschera*/
bool bit;
/*mascheramento*/
if ( dato & ( buffer << n) ) bit = TRUE; /*sciftiamo il bit del baffer di n bit a sinistra*/
else bit = FALSE; /*dopodiche eseguiamo l'end bit a bit tra buffer*/
/*e dato, se e solo se, l'& restituisce 1 nel bit*/
return bit; /*v'è il livello ligico alto*/
}
/*Programma verifica*/
int main( )
{
char byt, nbit;
bool uscita;
printf ( "\n ***********************************************************************\n " ) ;
printf ( "Byte = " ) ;
scanf ( "%c" , & byt) ;
printf ( "Bit da legere = " ) ;
scanf ( "%c" , & nbit) ;
uscita = leggibit( byt, nbit) ;
printf ( "\n bit = %c\n " , uscita) ;
//}
return 0 ;
}
Compilazione e output:
Codice sorgente - presumibilmente C/C++
$ cc leggibit.c -o leggibit
$./leggibit
***********************************************************************
Byte = 5
Bit da leggere =
bit =
Una volta inserito il byte, il programma spara in out le altre due stringhe senza fermarsi ad'ascoltare il Bit da leggere; per poi arrestarsi!
Ultima modifica effettuata da pistilloi il 12/10/2012 alle 22:37
anthony015 (Member )
Pro
Messaggi: 116
Iscritto: 20/05/2011
Codice sorgente - presumibilmente C/C++
int main()
{
char byt, nbit;
bool uscita;
printf("\n***********************************************************************\n");
printf("Byte=");
scanf("%c", &byt);
fflush(stdin);
printf("Bit da leggere = ");
scanf("%c", &nbit);
uscita = leggibit(byt, nbit);
printf("\nbit = %c\n", uscita);
//}
system("pause");
return 0;
}
Ultima modifica effettuata da anthony015 il 13/10/2012 alle 14:22
pistilloi (Normal User)
Newbie
Messaggi: 9
Iscritto: 03/12/2010
Il problema persiste!
Poggi Marco (Member )
Guru
Messaggi: 969
Iscritto: 05/01/2010
Postato originariamente da pistilloi :
Il problema persiste!
Prima di chiamare la funzione leggibit, viene richiesto il carattere da leggere all' utente, con il comando scanf().
In questo modo, nel buffer rimane occupato dall' ultimo invio.
Per ovviare a cio,usa:
Codice sorgente - presumibilmente C/C++
while (getchar() !='\n') ;