24 lines
814 B
C
24 lines
814 B
C
#include "c_float.h"
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
static void c_Double_print(c_Double_t value) {
|
|
uint64_t sign = value.sign;
|
|
uint64_t exponent = value.exponent;
|
|
uint64_t fraction = value.mantissa;
|
|
printf("数值: %.15f\n", value.d);
|
|
printf("整体十六进制: 0x%016llX\n", (unsigned long long)value.u);
|
|
printf("符号位 (Sign): %llu (%s)\n", (unsigned long long)sign, sign ? "负" : "正");
|
|
printf("指数位 (Exponent 原始值): %llu (实际 2 阶: %d)\n",
|
|
(unsigned long long)exponent, (int)exponent - 1023);
|
|
printf("尾数位 (Fraction 16进制): 0x%013llX\n", (unsigned long long)fraction);
|
|
printf("---------------------------------------\n");
|
|
}
|
|
|
|
int main(int argc, char** argv){
|
|
c_Double_t d={.d=1.0f};
|
|
c_Double_print(d);
|
|
|
|
return 0;
|
|
}
|