union & bit field 로 float 자료형 구현
2022. 12. 30. 11:28ㆍ개인공부/C++
유니온을 이용해서 처음에 배웠던 float 자료형의 원리를 다시 한번 구현해 보았다. 유니온은 크기가 같은 자료형이 있으면 데이터를 서로 다른 자료형으로 읽을 수 있다. union을 활용하면 long long 자료형을 int 자료형 2개로 구성하면 특정한 조합을 만들 수도 있고 아래의 코드처럼 비트필드와 활용하여 1bit 단위로 자료형을 만들어 float을 분석할 수 있다. 만약에 최상위 비트가 1이면 음수가 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <iostream>
struct IEEE
{
unsigned int Fraction: 23; // 가수 부분
unsigned int Exponent : 8; // 지수 부분
unsigned int MostSignificantBit : 1; // 최상위 비트(음수 , 양수)
};
union Float
{
IEEE ieee;
float floatnum;
};
int main(void)
{
Float num = {};
num.floatnum = -10.55111f;
std::cout << "\n\n float num :" << num.floatnum << std::endl;
std::cout << " MostSignifican Bit: " << num.ieee.MostSignificantBit << std::endl;
std::cout << " Exponent: " << num.ieee.Exponent << std::endl;
std::cout << " Fraction: " << num.ieee.Fraction << std::endl;
return 0;
}
|
cs |
'개인공부 > C++' 카테고리의 다른 글
C++ Array 배열 초기화 방법 (0) | 2023.01.29 |
---|---|
C++ 난수 생성 (0) | 2023.01.16 |
상속 (0) | 2022.12.16 |
tree erase 구현 (0) | 2022.12.15 |
enum class (0) | 2022.12.14 |