首页 > 其他 > 详细

一道关于位数扩充的题目

时间:2015-03-23 15:44:45      阅读:233      评论:0      收藏:0      [点我收藏+]

先总结:整形比较小于int的会扩宽的int再比较, 而有符号数扩宽填充符号位, 无符号数填充0,

1.无符号数扩充

#include <stdio.h>
int main(void)
{
        unsigned char a=0xe0;
        signed int b=a;
        printf("%u\n",b);
        printf("%x\n",b);
}


运行结果为:

224
e0

解析:因为a为无符号数,所以填充0,则在内存中b会变为

00

00

00

e0

2.有符号数扩充

#include <stdio.h>
int main(void)
{
        signed char a=0xe0;
        signed int b=a;
        printf("%u\n",b);
        printf("%x\n",b);
}

运行结果为

4294967264
ffffffe0

解析:因为此时a为符号数,所以填充符号数,因为e0二进制表示为1110 0000,所以填充1,则b在内存表示为

ff
ff
ff
e0

 

最后再强调一点,上述结果与b是否为有符号无关。

一道关于位数扩充的题目

原文:http://www.cnblogs.com/longzhongren/p/4359788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!