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.5;
  15. printf("\n+1.5: ");
  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.25;
  23. printf("\n+1.25: ");
  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. q.y = +1.125;
  31. printf("\n+1.125: ");
  32. for (int i = 7; i >= 0; i--) {
  33. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  34. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  35. printf("%c%c%c", b, a, i != 0 ? ' ' : '\0');
  36. }
  37.  
  38. q.y = +1.0625;
  39. printf("\n+1.0625: ");
  40. for (int i = 7; i >= 0; i--) {
  41. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  42. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  43. printf("%c%c%c", b, a, i != 0 ? ' ' : '\0');
  44. }
  45.  
  46. q.y = +1.03125;
  47. printf("\n+1.03125: ");
  48. for (int i = 7; i >= 0; i--) {
  49. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  50. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  51. printf("%c%c%c", b, a, i != 0 ? ' ' : '\0');
  52. }
  53.  
  54. return 0;
  55. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
Test Cases
+1.5:     3f f8 00 00 00 00 00 00
+1.25:    3f f4 00 00 00 00 00 00
+1.125:   3f f2 00 00 00 00 00 00
+1.0625:  3f f1 00 00 00 00 00 00
+1.03125: 3f f0 80 00 00 00 00 00