fork(1) download
  1. #include <cstdio>
  2.  
  3. template <typename number> char * tobinary(number x, char *buf)
  4. {
  5. number q;
  6. char *p=buf;
  7.  
  8. if((number)~0<0)
  9. {
  10. *(p++) = '0' + (x<0);
  11. q = (number)1 << ((sizeof(number)<<3) - 2);
  12. }
  13. else
  14. q = (number)1 << ((sizeof(number)<<3) - 1);
  15.  
  16. for(; q; q>>=1)
  17. *(p++) = x & q ? '1' : '0';
  18.  
  19. *p = 0;
  20.  
  21. return buf;
  22. }
  23.  
  24. #define POSVAL 7
  25. #define NEGVAL -7
  26.  
  27. int main(void)
  28. {
  29. char temp[128];
  30.  
  31. #define TEST(type,val) do { type x=val; puts(tobinary(x, temp)); } while(0)
  32.  
  33. TEST(char, POSVAL);
  34. TEST(unsigned char, POSVAL);
  35. TEST(signed char, POSVAL);
  36.  
  37. TEST(unsigned short, POSVAL);
  38. TEST(signed short, POSVAL);
  39.  
  40. TEST(unsigned, POSVAL);
  41. TEST(signed, POSVAL);
  42.  
  43. TEST(unsigned long, POSVAL);
  44. TEST(signed long, POSVAL);
  45.  
  46. TEST(unsigned long long, POSVAL);
  47. TEST(signed long long, POSVAL);
  48.  
  49. TEST(char, NEGVAL);
  50. TEST(unsigned char, NEGVAL);
  51. TEST(signed char, NEGVAL);
  52.  
  53. TEST(unsigned short, NEGVAL);
  54. TEST(signed short, NEGVAL);
  55.  
  56. TEST(unsigned, NEGVAL);
  57. TEST(signed, NEGVAL);
  58.  
  59. TEST(unsigned long, NEGVAL);
  60. TEST(signed long, NEGVAL);
  61.  
  62. TEST(unsigned long long, NEGVAL);
  63. TEST(signed long long, NEGVAL);
  64.  
  65. #undef TEST
  66.  
  67. getchar();
  68.  
  69. return 0;
  70. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
00000111
00000111
00000111
0000000000000111
0000000000000111
00000000000000000000000000000111
00000000000000000000000000000111
00000000000000000000000000000111
00000000000000000000000000000111
0000000000000000000000000000000000000000000000000000000000000111
0000000000000000000000000000000000000000000000000000000000000111
11111001
11111001
11111001
1111111111111001
1111111111111001
11111111111111111111111111111001
11111111111111111111111111111001
11111111111111111111111111111001
11111111111111111111111111111001
1111111111111111111111111111111111111111111111111111111111111001
1111111111111111111111111111111111111111111111111111111111111001