0
을 사용하여 부동 소수점을 10으로 변환. 이진수로 부동 소수점 표현을 표시 할 수있었습니다. 부호 비트, 지수 및 소수를 찾을 수 있습니다. 하지만 signbit, 지수 및 분수의 기본 10으로 변환하려면 어떻게해야할까요? 예 (12)에 대한 부동 소수점처럼 될 수 있습니다C++ IEEE 754
부호 비트 = 0
지수 = 130
값 = 4194304
#include "stdafx.h"
#include<stdio.h>
#include<iostream>
using namespace std;
void binary(int n, int i)
{
int k;
for (i--; i >= 0; i--)
{
k = n >> i;
if (k & 1)
printf("1");
else
printf("0");
}
}
typedef union
{
float f;
struct
{
unsigned int mantissa : 23;
unsigned int exponent : 8;
unsigned int sign : 1;
} field;
} myfloat;
int main()
{
myfloat var;
printf("Enter any float number: ");
scanf_s("%f", &var.f);
cout << "SignBit = ";
printf("%d ", var.field.sign);
cout << endl;
cout << "Exponent = ";
binary(var.field.exponent, 8);
printf(" ");
cout << endl;
cout << "Fraction = ";
binary(var.field.mantissa, 23);
printf("\n");
return 0;
}
일부 예제 출력이 유용 할 것입니다. 1.840 x 2^-3 또는 2.30 * 10^-1과 같은 것을 인쇄하고 싶습니까? –
@DietrichEpp 예제는 숫자 12 일 것입니다. 예를 들어 signbit = 0, exponent = 130 및 fraction = 4194304 –
UB로 인해 조합 솔루션이 잘못되었습니다. – deviantfan