C언어에서 float, double 형 2진수로 출력하기
공용체를 이용한다.
#include <stdint.h>
#include <stdio.h>
typedef union v32_union {
float f;
uint32_t u;
} v32;
typedef union v64_union {
double f;
uint64_t u;
} v64;
void print_float_bits (float f) {
v32 v; v.f = f;
uint32_t mask = 1 << 31;
do {
if (mask == 0x40000000 || mask == 0x400000) putchar(' ');
putchar(v.u & mask ? '1' : '0');
} while (mask >>= 1);
}
void print_double_bits (double d) {
v64 v; v.f = d;
uint64_t mask = 1ULL << 63;
int count = 63;
do {
if (mask == 0x4000000000000000 || mask == 0x8000000000000) putchar(' ');
putchar(v.u & mask ? '1' : '0');
count--;
} while (mask >>= 1);
}
int main(void) {
float a = 3.1415926f;
double b = 3.141592653589793238;
print_float_bits(a); /* 0 10000000 10010010000111111011010 */
putchar('\n');
print_double_bits(b); /* 0 10000000000 1001001000011111101101010100010001000010110100011000 */
}
Author And Source
이 문제에 관하여(C언어에서 float, double 형 2진수로 출력하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mhcoma/C언어에서-float-double-형-2진수로-출력하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)