贴一个分别按二进制,十进制,十六进制输出float型数据的代码。思路都是借鉴网上大神的。
ps:为什么在网上看到十六进制输出格式是%X,就是试不出来呢?
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//#include <stdio.h>
void main()
{
float inputnumber1,inputnumber2; //输入数
float sum, subtract; //记录 和 及 差
int i;
int *p;
fflush(stdin);
scanf("%f", &inputnumber1);
scanf("%f", &inputnumber2);
sum = inputnumber1 + inputnumber2;
subtract = inputnumber1 - inputnumber2;
////////////////////////////////////////二进制输出数据
printf("--------------------------------------------");
printf("二进制输出数据\n\n");
p = (int*)&inputnumber1;
printf("inputnumber1 = ");
for ( i = 31; i >= 0; i--)
{
printf("%d", (*p & (1 << i) ? 1 : 0));
if(i%4 == 0)
printf("_");
}
printf("\n");
p = (int*)&inputnumber2;
printf("inputnumber2 = ");
for ( i = 31; i >= 0; i--)
{
printf("%d", (*p & (1 << i) ? 1 : 0));
if(i%4 == 0)
printf("_");
}
printf("\n");
p = (int*)∑
printf("sum = ");
for ( i = 31; i >= 0; i--)
{
printf("%d", (*p & (1 << i) ? 1 : 0));
if(i%4 == 0)
printf("_");
}
printf("\n");
p = (int*)&subtract;
printf("subtract = ");
for ( i = 31; i >= 0; i--)
{
printf("%d", (*p & (1 << i) ? 1 : 0));
if(i%4 == 0)
printf("_");
}
printf("\n");
////////////////////////////////////////////十进制输出数据
printf("--------------------------------------------");
printf("十进制输出数据\n\n");
printf("%E + %E = %E\n", inputnumber1, inputnumber2, sum);
printf("%E - %E = %E\n", inputnumber1, inputnumber2, subtract);
//////////////////////////////////////////十六进制输出数据
printf("--------------------------------------------");
printf("十六进制输出数据\n\n");
int * pnum1 = (int *)&inputnumber1;
int * pnum2 = (int *)&inputnumber2;
int * psum = (int *)∑
int * psub = (int *)&subtract;
printf("%p + %p = %p\n",*pnum1, *pnum2, *psum);
printf("%p - %p = %p\n",*pnum1, *pnum2, *psub);
fflush(stdin);
getchar();
}
本文提供了一段C语言代码,用于以二进制、十进制和十六进制格式输出float类型的数据。作者在尝试十六进制输出时遇到了问题,虽然常见格式为%X,但实际效果未如预期。

2276

被折叠的 条评论
为什么被折叠?



