ragazzi c'è un metodo veloce per conoscere i bit di una variabile?
ragazzi c'è un metodo veloce per conoscere i bit di una variabile?
Devi ricorrere agli operatori bitwise.
every day above ground is a good one
sto cercando di trovare una funzione già fatta... ma non la trovoOriginariamente inviato da YuYevon
Devi ricorrere agli operatori bitwise.
se qualcuno la trova la potrebbe postare thx
Ma "conoscere i bit" in che senso? Cosa vuoi ottenere all'atto pratico?
Amaro C++, il gusto pieno dell'undefined behavior.
Sono cose elementari e difficilmente troverai funzioni "già fatte". Ti conviene studiare l'argomento, se conosci l'algebra booleana e il sistema numerico binario (che sono la base per chiunque abbia anche la più vaga e poco seria intenzione di studiare informatica) non ti ci vorrà molto...
La rappresentazione binaria di un valore in una variabile... spero :|Ma "conoscere i bit" in che senso? Cosa vuoi ottenere all'atto pratico?
every day above ground is a good one
i bit che compongono quella variabileOriginariamente inviato da MItaly
Ma "conoscere i bit" in che senso? Cosa vuoi ottenere all'atto pratico?
short var = 10;
writeBit(var);
//STAMPA: 1010
lo so che non è difficile ma devo già fare altri mille esercizi, se uso qualche funzione già fatta per il mio debug faccio primaSono cose elementari e difficilmente troverai funzioni "già fatte". Ti conviene studiare l'argomento, se conosci l'algebra booleana e il sistema numerico binario (che sono la base per chiunque abbia anche la più vaga e poco seria intenzione di studiare informatica) non ti ci vorrà molto...
si ma se parli di interi è una semplice traduzione in binario..
tu vuoi questo o una traduzione generica (tipo con un char o un array di char ecc..)?
Questo mostra ciò che è memorizzato byte per byte; ovviamente utilizzandolo con variabili più grandi di un byte si nota subito se il proprio PC è big o little endian.
Esempio (gcc 4.3.3, GNU/Linux 2.6.28 x86_64):codice:#include <stdio.h> void WriteBits(FILE * Stream, void * Var, size_t VarSize) { unsigned char * curAddr=(unsigned char *) Var; /* avrei potuto riciclare Var, ma così evito un po' di cast noiosi dopo */ unsigned char * lastAddr=curAddr+VarSize; unsigned int bitCount; for(;curAddr!=lastAddr;curAddr++) { for(bitCount=8;bitCount;bitCount--) fputc((*curAddr & (1<<bitCount))?'1':'0',Stream); } } int main(void) { unsigned int a=10; short b=5; double c=12.63; int d=50; int * e=&d; WriteBits(stdout,&a,sizeof(a)); putchar('\n'); WriteBits(stdout,&b,sizeof(b)); putchar('\n'); WriteBits(stdout,&c,sizeof(c)); putchar('\n'); WriteBits(stdout,&d,sizeof(d)); putchar('\n'); WriteBits(stdout,&e,sizeof(e)); putchar('\n'); return 0; }
codice:matteo@teoubuntu:~/cpp$ gcc WriteBits.c -O1 -O2 -O3 -o WriteBits.o matteo@teoubuntu:~/cpp$ ./WriteBits.o 00000101000000000000000000000000 0000001000000000 0110000101111010000101000010111001000111001000010001010000100000 00011001000000000000000000000000 0011111001011100001100000101000101111111001111110000000000000000
Amaro C++, il gusto pieno dell'undefined behavior.