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: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}
页:
[1]