PDA

Visualizza la versione completa : [C++] dubbi su codifiche binarie


Kilin
09-06-2008, 01:31
Ciao a tutti...

stavo facendo delle prove con le codifiche binarie, in particolare stavo cercando di fare una funzione che fa il complemento di un numero (so che esiste già, era una prova :fagiano: )

In pratica lavorando con gli altri operatori bit a bit ho trovato un modo, ma il risultato non mi quadra. Il procedimento è questo: recupero il numero di bit su cui è rappresentato il numero con un sizeof sul suo tipo. Dopo di che mi costruisco una codifica ad hoc che sfrutto per fare operazioni bit a bit col mio numero, per ottenere il complemento.

Complementando il numero '2' con la mia funzione però ottengo il numero '2147483645' invece di ottenere '-3', risultato che ho con l'operatore complemento del c++..

Eppure con un programma che dato un numero stampa le codifiche binarie la codifica del numerone che ottengo mi pare effettivamente il giusto complemento di quella di '2'..Evidentemente sbaglio qualcosa, l'idea (vaga) che mi son fatto è che la codifica che creo viene interpretata come numero positivo invece che come negativo, ma non capisco bene perchè..

Sapete dirmi dove sbaglio? Credo di essere vicino alla soluzione ma mi sfugge qualcosa...

grazie..

menphisx
09-06-2008, 02:17
Intendi questo ?


int number = 3;

printf("%d\n", number);

number = (~number) + 1;

printf("%d\n", number);

Kilin
09-06-2008, 10:28
No dunque ho trovato....

il problema era che per ottenere la codifica con tutti bit a '1' sbagliavo, prendevo il numero positivo più grande che si puo' rappresentare su quei bit, ma a quel numero corrisponde una codifica che è 0111111111...1, (perchè se avesse anche il primo bit a 1sarebbe negativo in complemento a 2)... Adesso ho risolto, per ottenere la codifica di tutti 1 complemento semplicemente lo zero e tutto fila :fagiano:

Loading