23 de ago. de 2012

Complemento de 2 em Hexadecimal em C

Para converter um número em decimal para seu complemento de dois, conforme usado no post anterior, utilizei o seguinte programa em C:

int inteiro=236;
unsigned char buf[20];
sprintf(buf,"%X",0xFFFFF-inteiro+1);   

printf("%c%c",buf[3],buf[4]);
       
>> 14

Descrevendo as operações realizadas:
sprintf - retorna um inteiro com o númeor de caracteres (informação inútil para mim neste programa) e faz a string do primeiro argumento (buf) receber, no formato em que está (%X, que significa hexadecimal) a variável no terceiro argumento, que na verdade, é a conta de complemento de dois: FFFFF-DEC2HEX(inteiro) (ele já interpreta como hexadecimal pelo %X) +1.

Um comentário: