#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
typedef union
{
double value;
uint64_t bits;
} double_bits;
int main(void)
{
printf("BOLSCHOE (NIIBAZZO) CHISLO:\n"); uint64_t sign = 1;
uint64_t exponent = ((1U << 11) - 1) - 1; // The last exponent is for NaN and INF.
uint64_t mantissa = (1ULL << 52) - 1;
double_bits large = { .bits = sign << 63 | exponent << 52 | mantissa };
printf("%.1f\n", large.
value);
printf("\nOCHE (NIIBAZZO) MALENKOE CHISLO:\n"); exponent = 0; // Lowest possible negative exponent (denormalized number).
mantissa = 1; // Lowest posssible mantissa (no implicit 53th bit).
double_bits small = { .bits = sign << 63 | exponent << 52 | mantissa };
printf("%.1100f\n", small.
value); }
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCnR5cGVkZWYgdW5pb24KewogICAgZG91YmxlIHZhbHVlOwogICAgdWludDY0X3QgYml0czsKfSBkb3VibGVfYml0czsKCmludCBtYWluKHZvaWQpCnsKICAgIHByaW50ZigiQk9MU0NIT0UgKE5JSUJBWlpPKSBDSElTTE86XG4iKTsKICAgIHVpbnQ2NF90IHNpZ24gPSAxOwogICAgdWludDY0X3QgZXhwb25lbnQgPSAoKDFVIDw8IDExKSAtIDEpIC0gMTsgLy8gVGhlIGxhc3QgZXhwb25lbnQgaXMgZm9yIE5hTiBhbmQgSU5GLgogICAgdWludDY0X3QgbWFudGlzc2EgPSAoMVVMTCA8PCA1MikgLSAxOwogICAgZG91YmxlX2JpdHMgbGFyZ2UgPSB7IC5iaXRzID0gc2lnbiA8PCA2MyB8IGV4cG9uZW50IDw8IDUyIHwgbWFudGlzc2EgfTsKICAgIHByaW50ZigiJS4xZlxuIiwgbGFyZ2UudmFsdWUpOwogICAgCiAgICBwcmludGYoIlxuT0NIRSAoTklJQkFaWk8pIE1BTEVOS09FIENISVNMTzpcbiIpOwogICAgZXhwb25lbnQgPSAwOyAvLyBMb3dlc3QgcG9zc2libGUgbmVnYXRpdmUgZXhwb25lbnQgKGRlbm9ybWFsaXplZCBudW1iZXIpLgogICAgbWFudGlzc2EgPSAxOyAvLyBMb3dlc3QgcG9zc3NpYmxlIG1hbnRpc3NhIChubyBpbXBsaWNpdCA1M3RoIGJpdCkuCiAgICBkb3VibGVfYml0cyBzbWFsbCA9IHsgLmJpdHMgPSBzaWduIDw8IDYzIHwgZXhwb25lbnQgPDwgNTIgfCBtYW50aXNzYSB9OwogICAgcHJpbnRmKCIlLjExMDBmXG4iLCBzbWFsbC52YWx1ZSk7Cn0K