十进制转ieee754标准二进制浮点数c语言

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <float.h>

// 将单精度浮点数转换为二进制字符串
void floatToBinary(float num, char* binaryStr) {
    unsigned int* binary = (unsigned int*)#
    for (int i = 0; i < 32; i++) {
        binaryStr[31 - i] = ((*binary >> i) & 1) ? '1' : '0';
    }
    binaryStr[32] = '\0';
}

// 打印 IEEE 754 格式
void printIEEE754(float num) {
    char binaryStr[33];
    floatToBinary(num, binaryStr);

    // 分解为符号位、指数和尾数
    char sign[2] = { binaryStr[0], '\0' };
    char exponent[9];
    char mantissa[24];

    strncpy_s(exponent, binaryStr + 1, 8);
    exponent[8] = '\0';
    strncpy_s(mantissa, binaryStr + 9, 23);
    mantissa[23] = '\0';

    printf("二进制表示 (32位): %s\n", binaryStr);
    printf("符号位: %s\n", sign);
    printf("指数: %s\n", exponent);
    printf("尾数: %s\n", mantissa);
    printf("IEEE 754格式: %s %s %s\n", sign, exponent, mantissa);
}

int main() {
    float num;
    printf("请输入一个十进制浮点数: ");
    scanf_s("%f", &num);

    printIEEE754(num);

    return 0;
}

  

posted @ 2025-07-17 09:46  dianziyang2002  阅读(30)  评论(0)    收藏  举报