2016-11-14 3 views
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; 
} 
+0

일부 예제 출력이 유용 할 것입니다. 1.840 x 2^-3 또는 2.30 * 10^-1과 같은 것을 인쇄하고 싶습니까? –

+0

@DietrichEpp 예제는 숫자 12 일 것입니다. 예를 들어 signbit = 0, exponent = 130 및 fraction = 4194304 –

+0

UB로 인해 조합 솔루션이 잘못되었습니다. – deviantfan

답변

1

을 그냥 그것들을 인쇄 할 수 있습니다.

cout << var.field.mantissa << ' ' << var.field.exponent << ' ' << var.field.sign << '\n'; 
관련 문제