#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;
}