十六进制相关(计算机存储十六进制负数、与十进制转换)


负数的十六进制表示

刚开始没多思考,不知道如何表示负数。

原码  反码   补码 

在计算机中,数据是以补码的形式存储的。

正数的原码,补码,反码都相同,都等于它本身

负数的补码是:符号位为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);

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值