0
を使用して浮動小数点数を10に変換するバイナリで数値の浮動小数点表現を示すことができ、signbit、指数、および分数が見つかりました。しかし、もしそれをsignbitの基数10に変換したいのであれば、指数部と小数部はどのようにするのでしょうか。ただ、それらを印刷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例はsignbit = 0、exponent = 130、およびfraction = 4194304 –
のように数字12になります。UBが原因で組合解が間違っています。 – deviantfan