int2float

// ===================================================================================== // // Filename: int2float.c // // Description: int和float转换时,内存是如何变的,gdb x调试 // // Version: 1.0 // Created: 2010年05月06日 20时44分15秒 // Revision: none // Compiler: g++ // // Author: Li Weijian (), lwj1396@163.com // Company: // // ===================================================================================== int main() { int i=5; float f=i;//自动转换 float ff=*(float*)&i;//内存变得一样,值则不一样了 return 0; Breakpoint 1, main () at int2float.c:18 18 int i=5; (gdb) (gdb) n 19 float f=i; (gdb) print i $1 = 5 (gdb) x &i 0xbffff404: 0x00000005 (gdb) print f $2 = 3.98773969e-34 (gdb) n 20 float ff=*(float*)&i; (gdb) print f $3 = 5 (gdb) x &f 0xbffff400: 0x40a00000 (gdb) print ff $4 = 3.6963619e-39 (gdb) print &i $5 = (int *) 0xbffff404 (gdb) x &i 0xbffff404: 0x00000005 (gdb) n 21 return 0; (gdb) print ff $6 = 7.00649232e-45 (gdb) x ff 0x0: Cannot access memory at address 0x0 (gdb) x &ff 0xbffff3fc: 0x00000005 (gdb) x &i 0xbffff404: 0x00000005 (gdb) print ff $7 = 7.00649232e-45 (gdb) x &f 0xbffff400: 0x40a00000 0x40a00000 0100 0000 1010 0000 0000 0000 0000 0000 842 1 1+2**7 129-127=2 1.25*2**2=5 x xxxxxxxx xxxxxxxxxxxxxxxxxxxxx 符号 8位exp 2**-1 2**-2 23位 计算公式:1.xxxx*2**exp-127 思考:float f=7.0; short s=*(short*)&f; 取前两个byte }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值