fork download
  1. #include <cstdint>
  2. #include <cmath>
  3. #include <iostream>
  4.  
  5. // convert IEEE 754 double precision floating-point number to binary
  6. int main() {
  7. double d = 3.14; // example number
  8.  
  9. // extract components of double
  10. uint64_t sign = (d < 0) ? 1 : 0;
  11. uint64_t exponent = (uint64_t) log2(std::abs(d));
  12. double mantissa = std::abs(d) / pow(2, exponent);
  13.  
  14. // convert components to binary
  15. uint64_t sign_bin = sign << 63;
  16. uint64_t exponent_bin = exponent << 52;
  17. uint64_t mantissa_bin = (uint64_t) (mantissa * (double) (1UL << 52));
  18.  
  19. // combine components to form IEEE 754 double precision binary
  20. uint64_t binary = sign_bin | exponent_bin | mantissa_bin;
  21.  
  22. // print binary
  23. std::cout << std::hex << binary << std::endl;
  24.  
  25. return 0;
  26. }
Success #stdin #stdout 0.01s 5476KB
stdin
Standard input is empty
stdout
191eb851eb851f