#include <cstdio>
#include <vector>
void showBits(void* ptr, size_t size) {
for (int i = size-1; i >= 0; --i) {
unsigned char* byte = (unsigned char*)ptr + i;
for (int j = 7; j >= 0; j--) {
printf("%d", (*byte >> j) & 1);
}
printf(" ");
}
printf("\n");
}
void genDouble(double* ptr, std::vector<int> data) {
for (int i = 7; i >= 0; --i) {
char* byte = (char*)ptr + i;
*byte = data[7 - i];
}
}
int main() {
double a = 0.0;
genDouble(&a, {0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01});
std::printf("%e\n", a);
showBits(&a, 8);
double b = 0.0;
genDouble(&b, {0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00});
std::printf("%e\n", b);
showBits(&b, 8);
std::printf("a > b %d\n", a > b);
std::printf("a == b %d\n", a == b);
double c = a;
showBits(&c, 8);
std::printf("a == c %d\n", a == c);
return 0;
}
1.000000e+00
00111111 11110000 00000000 00000000 00000000 00000000 00000000 00000001
1.000000e+00
00111111 11110000 00000000 00000000 00000000 00000000 00000000 00000000
a > b 1
a == b 0
00111111 11110000 00000000 00000000 00000000 00000000 00000000 00000001
a == c 1