返回信息流short x=-35;
long y;
y=x;
求解过程如下:
x=-35=-000 0000 0010 0011;
[x]原码=1000 0000 0010 0011;
[x]补码=1111 1111 1101 1101;
将[x]补扩充为32位,然后充当[y]补,则
[y]补=1111 1111 1111 1111 1111 1111 1101 1101;
问题:[x]扩充的时候,为什么前16位均用1填充?是为了保持从short到long变量的值不变么?
但是我在看到将float到double的变量转换中,则是通过存储形式将精度位数扩展为16位,用0填充?
不明所以,恳请大家指教~谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #41777同步于 2010/7/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
有关数据转换的一个问题
dufangyu
2010/7/25镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
x是个负数,符号位。。。。。。=。=
至于float和double,可以去看下浮点数的编码规则,浮点数的符号域和精度域是两个域,精度域填充0,符号位该是啥还是啥
【 在 zxsword 的大作中提到: 】
: x是个负数,符号位。。。。。。=。=
: 至于float和double,可以去看下浮点数的编码规则,浮点数的符号域和精度域是两个域,精度域填充0,符号位该是啥还是啥
多谢!