cod*_*rix 2 c floating-point ieee-754
我创建了以下程序来查找浮点数的位模式。但我得到了不同的然后我计算:
#include<stdio.h>
int main(void){
float f = 1.234;
char *ch;
ch = (char *)(&f);
printf("\n%d\n", *ch);
ch++;
printf("\n%d\n", *ch);
ch++;
printf("\n%d\n", *ch);
ch++;
printf("\n%d\n", *ch);
// printf("%d %d %d %d", *ch, *(ch+1), *(ch+2), *(ch+3));
printf("\n%f %e", f, f);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给了我输出:
-74
-13
-99
63
1.234000 1.234000e+00
Run Code Online (Sandbox Code Playgroud)
这是什么意思,因为我期望位模式为:
00111111 10111011 11100111 0110110
我错的地方请纠正我
我不确定你从哪里得到那个位模式。
对于 IEEE-754,1.234相当于0x3F9DF3B6(参见例如http://babbage.cs.qc.edu/IEEE-754/Decimal.html)的底层表示。所以我们有:
0x3F = 00111111 = 63
0x9D = 10011101 = -99 (as a signed char)
0xF3 = 11110011 = -13
0xB6 = 10110110 = -74
Run Code Online (Sandbox Code Playgroud)
根据您的系统字节序,您可能会发现这些字节以其他顺序出现。
| 归档时间: |
|
| 查看次数: |
780 次 |
| 最近记录: |