fork download
  1. #include <stdio.h>
  2.  
  3. union Float64 {
  4. double y;
  5. char bytes[8];
  6. };
  7.  
  8. int main(void) {
  9. const char digits[] = "0123456789abcdef";
  10. union Float64 q;
  11.  
  12. printf("Test Cases");
  13.  
  14. q.y = +1.0;
  15. printf("\n+1.0: ");
  16. for (int i = 7; i >= 0; i--) {
  17. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  18. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  19. printf("%c%c%c", b, a, i != 0 ? ' ' : '\0');
  20. }
  21.  
  22. q.y = +1.1;
  23. printf("\n+1.1: ");
  24. for (int i = 7; i >= 0; i--) {
  25. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  26. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  27. printf("%c%c%c", b, a, i != 0 ? ' ' : '\0');
  28. }
  29.  
  30. return 0;
  31. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
Test Cases
+1.0: 3f f0 00 00 00 00 00 00
+1.1: 3f f1 99 99 99 99 99 9a