float 二进制和十六进制输出

本文提供了一段C语言代码,用于以二进制、十进制和十六进制格式输出float类型的数据。作者在尝试十六进制输出时遇到了问题,虽然常见格式为%X,但实际效果未如预期。

贴一个分别按二进制,十进制,十六进制输出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*)&sum;
    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 *)&sum;
    int * psub = (int *)&subtract;
    printf("%p + %p = %p\n",*pnum1, *pnum2, *psum);
    printf("%p - %p = %p\n",*pnum1, *pnum2, *psub);



    fflush(stdin);
    getchar();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值