六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 33|回复: 0

int2float

[复制链接]

升级  72.35%

801

主题

801

主题

801

主题

探花

Rank: 6Rank: 6

积分
2447
 楼主| 发表于 2013-1-26 13:45:15 | 显示全部楼层 |阅读模式
// =====================================================================================// //       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:1818int i=5;(gdb) (gdb) n19float f=i;(gdb) print i$1 = 5(gdb) x &i0xbffff404:0x00000005(gdb) print f$2 = 3.98773969e-34(gdb) n20float ff=*(float*)&i;(gdb) print f$3 = 5(gdb) x &f0xbffff400:0x40a00000(gdb) print ff$4 = 3.6963619e-39(gdb) print &i$5 = (int *) 0xbffff404(gdb) x &i0xbffff404:0x00000005(gdb) n21return 0;(gdb) print ff$6 = 7.00649232e-45(gdb) x ff0x0:Cannot access memory at address 0x0(gdb) x &ff0xbffff3fc:0x00000005(gdb) x &i0xbffff404:0x00000005(gdb) print ff$7 = 7.00649232e-45(gdb) x &f0xbffff400:0x40a000000x40a000000100 0000 1010 0000 0000 0000 0000 0000      842 11+2**7129-127=21.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}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表