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.