有关C/C++中16进制的问题

转自:http://www.xici.net/d77443124.htm

看了很多帖,有关C/C++中16进制数使用的问题很多,在这里开个专题:

1)什么是16进制数?
这个,呵呵,太简单了吧,飞过
2)为什么在C/C++程序中大量使用16进制数?
我们知道所有的数在计算机中都是以2进制存储的,例如1000,在内存中就是1111101000,C/C++是比较底层的语言,在程序中有时希望比较直观的表示内存中数据存储的真实状态,所以最好在程序中直接使用2进制来描述数值,这样你的程序将是:
int a[1111101000];
x=1010101111010010101010;
a[101111011]=x*1010101111010010101010/010100001010101010101111110;
.....


呵呵,崩溃了吧!
所以,程序这样写是要人命的,怎么办呢?用10进制难以反映内存中真实数据存储状态,2进制太长,所以有人就想到了16进制:
1010101111010010101010==2AF4AA
16进制比2进制最大的优势就是短,那短有什么好处?
a.书写速度快;b.记忆方便;c.写的少出错概率自然低;d.减少程序每行长度;
16进制比10进制有哪些优势呢?
a.2进制和16进制互相转换简便,四个2进制位刚好对应一个16进制位;
b.两位16进制数在内存中存储刚好占一个字节,我们一看就知道2ab234cd在内存中占用4个字节,如果知道了这个数存放的地址,其中哪个位数存在哪个字节都能一目了然,可以更加直观反映内存存储数据、处理数据的实际情况:
c.很多C/C++的程序调试工具默认使用16进制描述数值,尤其在描述各种地址的时候;
d.程序显得比较高深,呵呵;


3)在C/C++程序中怎么使用16进制数
16进制的整型:
程序中使用16进制的常数,需要用0x开始,以便区别0x1234,1234,前者代表16进制的1234,后者是10进制的1234,0x1234可比1234大多了,注意0x1234等价于0x01234等价于0x000000001234;
16进制的字符型:
字符型只有一个字节,所以赋值给它不能超过2位16进制数,例如有字符型变量如下:
char c=0x5A;   //相当于把ASCII码为0x5A的字符赋值给c;
也可以在单引号中使用转义字符的时使用16进制:
char c='\x5A';   //相当于把ASCII码为0x5A的字符赋值给c;注意到了么,使用转义字符时x前面的0没了,x后面的0也不能写!
16进制的浮点型:
没用过!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值