#include <cstdint>
#include <cmath>
#include <iostream>
// convert IEEE 754 double precision floating-point number to binary
int main() {
double d = 3.14; // example number
// extract components of double
uint64_t sign = (d < 0) ? 1 : 0;
uint64_t exponent = (uint64_t) log2(std::abs(d));
double mantissa = std::abs(d) / pow(2, exponent);
// convert components to binary
uint64_t sign_bin = sign << 63;
uint64_t exponent_bin = exponent << 52;
uint64_t mantissa_bin = (uint64_t) (mantissa * (double) (1UL << 52));
// combine components to form IEEE 754 double precision binary
uint64_t binary = sign_bin | exponent_bin | mantissa_bin;
// print binary
std::cout << std::hex << binary << std::endl;
return 0;
}
I2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8gY29udmVydCBJRUVFIDc1NCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBiaW5hcnkKaW50IG1haW4oKSB7CiAgZG91YmxlIGQgPSAzLjE0OyAvLyBleGFtcGxlIG51bWJlcgoKICAvLyBleHRyYWN0IGNvbXBvbmVudHMgb2YgZG91YmxlCiAgdWludDY0X3Qgc2lnbiA9IChkIDwgMCkgPyAxIDogMDsKICB1aW50NjRfdCBleHBvbmVudCA9ICh1aW50NjRfdCkgbG9nMihzdGQ6OmFicyhkKSk7CiAgZG91YmxlIG1hbnRpc3NhID0gc3RkOjphYnMoZCkgLyBwb3coMiwgZXhwb25lbnQpOwoKICAvLyBjb252ZXJ0IGNvbXBvbmVudHMgdG8gYmluYXJ5CiAgdWludDY0X3Qgc2lnbl9iaW4gPSBzaWduIDw8IDYzOwogIHVpbnQ2NF90IGV4cG9uZW50X2JpbiA9IGV4cG9uZW50IDw8IDUyOwogIHVpbnQ2NF90IG1hbnRpc3NhX2JpbiA9ICh1aW50NjRfdCkgKG1hbnRpc3NhICogKGRvdWJsZSkgKDFVTCA8PCA1MikpOwoKICAvLyBjb21iaW5lIGNvbXBvbmVudHMgdG8gZm9ybSBJRUVFIDc1NCBkb3VibGUgcHJlY2lzaW9uIGJpbmFyeQogIHVpbnQ2NF90IGJpbmFyeSA9IHNpZ25fYmluIHwgZXhwb25lbnRfYmluIHwgbWFudGlzc2FfYmluOwoKICAvLyBwcmludCBiaW5hcnkKICBzdGQ6OmNvdXQgPDwgc3RkOjpoZXggPDwgYmluYXJ5IDw8IHN0ZDo6ZW5kbDsKCiAgcmV0dXJuIDA7Cn0=