十六進位制相關(計算機儲存十六進位制負數、與十進位制轉換)
阿新 • • 發佈:2018-12-20
負數的十六進位制表示
剛開始沒多思考,不知道如何表示負數。
原碼 反碼 補碼
在計算機中,資料是以補碼的形式儲存的。
正數的原碼,補碼,反碼都相同,都等於它本身
負數的補碼是:符號位為1,其餘各位求反,末位加1
反碼是:符號位為1,其餘各位求反,但末位不加1
也就是說,反碼末位加上1就是補碼
-1
0000 0001 原碼
1111 1110 反碼
1111 1111 補碼
0xff 十六進位制
-86
0101 0110 原碼
1010 1001 反碼
1010 1010 補碼
0xaa 十六進位制
/*
0xff aa 字
0xff ff ff aa 雙字
0xff ff ff ff ff ff ff aa 四字
*/
十進位制轉十六進位制 C
網上說的有一種非標準的庫函式可以使用,不是所有編譯器都支援。
char * itoa ( int value, char * str, int base );value是要轉化的數字,str是轉化後的字串儲存的位置,base是進位制數
其實用sprintf就能解決了
int sprintf( char *buffer, const char *format, [ argument] … );
例如:
char ch[2];
sprintf( ch, "%x", 100);