二进制 | 十进制分数 | 十进制值 |
0.1 | 1/2 | 0.5 |
0.01 | 1/4 | 0.25 |
0.001 | 1/8 | 0.125 |
0.0001 | 1/16 | 0.0625 |
0.00001 | 1/32 | 0.03125 |
0.000001 | 1/64 | 0.015625 |
二进制 | 十进制分数 | 十进制值 |
10.101 | 2+1/2+1/8 | 2.625 |
10011.001 | 19+1/8 | 19.125 |
10110.1101 | 22+1/2+1/4+1/16 | 22.8125 |
1101.011 | 13+1/4+1/8 | 13.375 |
(gdb) x/4xb &value2
0x8049094 <value2>: 0x00 0x00 0x80 0x48
(gdb) x/4xb &value3
0x8049098 <value3>: 0x00 0x00 0x80 0x48
value4:
.double 262144.00
value5:
.double 262144.01
(gdb) x/gf &value5
0x80490a4 <value5>: 262144.01000000001
0x804909c <value4>: 0x00 0x00 0x00 0x00 0x00 0x00 0x10 0x41
(gdb) x/8xb &value5
0x80490a4 <value5>: 0xa4 0x70 0x3d 0x0a 0x00 0x00 0x10 0x41
#include <stdio.h>
#include <math.h>
int main()
{
double total = 0;
int i;
total += 1 / pow(2, 7);
total += 1 / pow(2, 9);
for (i = 13; i < 17; i++)
total += 1 / pow(2, i);
total += 1 / pow(2, 18);
total += 1 / pow(2, 20);
total += 1 / pow(2, 21);
total += 1 / pow(2, 22);
total += 1 / pow(2, 27);
total += 1 / pow(2, 29);
total += 1 / pow(2, 32);
printf ("%lf\\n", total);
return (0);
}
beyes@beyes-groad:~/programming/assembly/float$ ./test.exe
0.010000
beyes@beyes-groad:~/programming/assembly/float$ ./test.exe
0.01000000000931323
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |