32位的浮点数在转化成2进制的各个部分是如何让分配的
发布网友
发布时间:2022-04-20 03:17
我来回答
共3个回答
热心网友
时间:2022-07-12 21:46
用联合体试试。
float x; 给数
unsigned long int z; 右移,一位一位地把数取出,打印出来。
union u{
float x; // 32位的浮点数
unsigned long int z; // 假定你的编译器 long int 是 32 位整数。
} U;
void main()
{
int i;
U.x = 1.0;
for (i=31;i>=0;i--) printf("%1d", (U.z>>i) & 0x0001);
printf("\n");
U.x = 0.5;
for (i=31;i>=0;i--) printf("%1d", (U.z>>i) & 0x0001);
printf("\n");
U.x = 1.5 * 1E07;
for (i=31;i>=0;i--) printf("%1d", (U.z>>i) & 0x0001);
printf("\n");
}
热心网友
时间:2022-07-12 21:46
建议你看看《计算机组织与结构体系》中关于浮点数的介绍。
里面详细讲解了浮点数是如何在内存中表示的,我当时看了好几遍才看懂,所以很难讲。
热心网友
时间:2022-07-12 21:47
参阅VB浮点数处理:见参考资料连接