编写程序打印查看97.6875和-97.6875的double型值在计算机爱iE
754存储格式按字节的十六进制值,验证是否与教材所给结果一致。同时也打印
查看97.6875和-97.6875的float型值在计算机内的IE754存储格式按字节的
十六进制值。
不会写.有没有人可以帮帮我
一个办法就是,用一个无符号8位的整指针指向把double型和float型浮点数值的位置,然后逐字节打印其十六进制值即可。代码如下, 仅供参考,如有不对之处,请不吝赐教:
参考链接:
分享一个打印浮点型数据的十六进制形式的函数_GGuy的博客-CSDN博客_浮点数16进制输出
uint8_t是什么数据类型_林一元的博客-CSDN博客_uint8_t是什么数据类型
#include <stdio.h>
#include <stdint.h>
int main(void){
double a = 97.6875;
//https://blog.csdn.net/weixin_38324309/article/details/113108087
//https://blog.csdn.net/qq_45512097/article/details/124458205
uint8_t* pa = (uint8_t*)&a;
double b = -97.6875;
uint8_t* pb = (uint8_t*)&b;
printf("double型%f的按字节的内存十六进制值为:\n",a);
//printf("sizof(a)=%d,sizeof(b)=%d\n",sizeof(a),sizeof(b));
for(int i=0;i<sizeof(a);i++){
uint8_t ch = pa[i];
printf("%x ",ch);
}
printf("\ndouble型%f的按字节的内存十六进制值为:\n",b);
for(int i=0;i<sizeof(b);i++){
uint8_t ch = (uint8_t)pb[i];
printf("%x ",ch);
}
float fa = 97.6875f;
//https://blog.csdn.net/weixin_38324309/article/details/113108087
//https://blog.csdn.net/qq_45512097/article/details/124458205
uint8_t* pfa = (uint8_t*)&fa;
float fb = -97.6875f;
uint8_t* pfb = (uint8_t*)&fb;
printf("\n\nfloat%f的按字节的内存十六进制值为:\n",fa);
//printf("sizof(a)=%d,sizeof(b)=%d\n",sizeof(fa),sizeof(fb));
for(int i=0;i<sizeof(fa);i++){
uint8_t ch = pfa[i];
printf("%x ",ch);
}
printf("\nfloat型%f的按字节的内存十六进制值为:\n",fb);
for(int i=0;i<sizeof(fb);i++){
uint8_t ch = (uint8_t)pfb[i];
printf("%x ",ch);
}
return 0;
}