负数的十六进制表示
刚开始没多思考,不知道如何表示负数。
原码 反码 补码
在计算机中,数据是以补码的形式存储的。
正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为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);