fork download
  1. #include <cstdio>
  2. using namespace std;
  3. // シフト演算の確認
  4. int main(){
  5. int ii;
  6.  
  7. // char(1バイト)型での確認
  8. signed char ca;
  9. unsigned char cb;
  10. for(ii = 0; ii <= 32; ii++){
  11. ca = (char)0x88; //エラー回避のためキャスト
  12. ca >>= ii;
  13. printf("signed char >> %02d = %08x %02x\n", ii, (int)ca, (unsigned char)ca);
  14. }
  15. for(ii = 0; ii <= 32; ii++){
  16. cb = (unsigned char)0x88; //エラー回避のためキャスト
  17. cb >>= ii;
  18. printf("unsigned char >> %02d = %08x %02x\n", ii, (int)cb, (unsigned char)cb);
  19. }
  20.  
  21. // short(2バイト)型での確認
  22. signed short sa;
  23. unsigned short sb;
  24. for(ii = 0; ii <= 32; ii++){
  25. sa = (short)0x8888; //エラー回避のためキャスト
  26. sa >>= ii;
  27. printf("signed short >> %02d = %08x %04x\n", ii, (int)sa, (unsigned short)sa);
  28. }
  29. for(ii = 0; ii <= 32; ii++){
  30. sb = (unsigned short)0x8888; //エラー回避のためキャスト
  31. sb >>= ii;
  32. printf("unsigned short >> %02d = %08x %04x\n", ii, (int)sb, (unsigned short)sb);
  33. }
  34.  
  35. // int(4バイト)型での確認
  36. signed int ia;
  37. unsigned int ib;
  38. for(ii = 0; ii <= 32; ii++){
  39. ia = 0x88888888;
  40. ia >>= ii;
  41. printf("signed int >> %02d = %08x\n", ii, ia);
  42. }
  43. for(ii = 0; ii <= 32; ii++){
  44. ib = 0x88888888;
  45. ib >>= ii;
  46. printf("unsigned int >> %02d = %08x\n", ii, ib);
  47. }
  48. /*
  49. // long(4バイト)型での確認
  50. signed long la;
  51. unsigned long lb;
  52. for(ii = 0; ii <= 32; ii++){
  53. la = 0x88888888;
  54. la >>= ii;
  55. printf("signed long >> %02d = %08x\n", ii, la);
  56. }
  57. for(ii = 0; ii <= 32; ii++){
  58. lb = 0x88888888;
  59. lb >>= ii;
  60. printf("unsigned long >> %02d = %08x\n", ii, lb);
  61. }
  62. */
  63. // long(8バイト)型での確認
  64. signed long la;
  65. unsigned long lb;
  66. for(ii = 0; ii <= 64; ii+=2){
  67. la = 0x8888888888888888;
  68. la >>= ii;
  69. printf("signed long >> %02d = %016lx\n", ii, la);
  70. }
  71. for(ii = 0; ii <= 64; ii+=2){
  72. lb = 0x8888888888888888;
  73. lb >>= ii;
  74. printf("unsigned long >> %02d = %016lx\n", ii, lb);
  75. }
  76.  
  77. // long long(8バイト)型での確認
  78. signed long long lla;
  79. unsigned long long llb;
  80. for(ii = 0; ii <= 64; ii+=2){
  81. lla = 0x8888888888888888;
  82. lla >>= ii;
  83. printf("signed long long >> %02d = %016llx\n", ii, lla);
  84. }
  85. for(ii = 0; ii <= 64; ii+=2){
  86. llb = 0x8888888888888888;
  87. llb >>= ii;
  88. printf("unsigned long long >> %02d = %016llx\n", ii, llb);
  89. }
  90.  
  91. return 0;
  92. }
  93.  
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
signed char >> 00 = ffffff88 88
signed char >> 01 = ffffffc4 c4
signed char >> 02 = ffffffe2 e2
signed char >> 03 = fffffff1 f1
signed char >> 04 = fffffff8 f8
signed char >> 05 = fffffffc fc
signed char >> 06 = fffffffe fe
signed char >> 07 = ffffffff ff
signed char >> 08 = ffffffff ff
signed char >> 09 = ffffffff ff
signed char >> 10 = ffffffff ff
signed char >> 11 = ffffffff ff
signed char >> 12 = ffffffff ff
signed char >> 13 = ffffffff ff
signed char >> 14 = ffffffff ff
signed char >> 15 = ffffffff ff
signed char >> 16 = ffffffff ff
signed char >> 17 = ffffffff ff
signed char >> 18 = ffffffff ff
signed char >> 19 = ffffffff ff
signed char >> 20 = ffffffff ff
signed char >> 21 = ffffffff ff
signed char >> 22 = ffffffff ff
signed char >> 23 = ffffffff ff
signed char >> 24 = ffffffff ff
signed char >> 25 = ffffffff ff
signed char >> 26 = ffffffff ff
signed char >> 27 = ffffffff ff
signed char >> 28 = ffffffff ff
signed char >> 29 = ffffffff ff
signed char >> 30 = ffffffff ff
signed char >> 31 = ffffffff ff
signed char >> 32 = ffffff88 88
unsigned char >> 00 = 00000088 88
unsigned char >> 01 = 00000044 44
unsigned char >> 02 = 00000022 22
unsigned char >> 03 = 00000011 11
unsigned char >> 04 = 00000008 08
unsigned char >> 05 = 00000004 04
unsigned char >> 06 = 00000002 02
unsigned char >> 07 = 00000001 01
unsigned char >> 08 = 00000000 00
unsigned char >> 09 = 00000000 00
unsigned char >> 10 = 00000000 00
unsigned char >> 11 = 00000000 00
unsigned char >> 12 = 00000000 00
unsigned char >> 13 = 00000000 00
unsigned char >> 14 = 00000000 00
unsigned char >> 15 = 00000000 00
unsigned char >> 16 = 00000000 00
unsigned char >> 17 = 00000000 00
unsigned char >> 18 = 00000000 00
unsigned char >> 19 = 00000000 00
unsigned char >> 20 = 00000000 00
unsigned char >> 21 = 00000000 00
unsigned char >> 22 = 00000000 00
unsigned char >> 23 = 00000000 00
unsigned char >> 24 = 00000000 00
unsigned char >> 25 = 00000000 00
unsigned char >> 26 = 00000000 00
unsigned char >> 27 = 00000000 00
unsigned char >> 28 = 00000000 00
unsigned char >> 29 = 00000000 00
unsigned char >> 30 = 00000000 00
unsigned char >> 31 = 00000000 00
unsigned char >> 32 = 00000088 88
signed short >> 00 = ffff8888 8888
signed short >> 01 = ffffc444 c444
signed short >> 02 = ffffe222 e222
signed short >> 03 = fffff111 f111
signed short >> 04 = fffff888 f888
signed short >> 05 = fffffc44 fc44
signed short >> 06 = fffffe22 fe22
signed short >> 07 = ffffff11 ff11
signed short >> 08 = ffffff88 ff88
signed short >> 09 = ffffffc4 ffc4
signed short >> 10 = ffffffe2 ffe2
signed short >> 11 = fffffff1 fff1
signed short >> 12 = fffffff8 fff8
signed short >> 13 = fffffffc fffc
signed short >> 14 = fffffffe fffe
signed short >> 15 = ffffffff ffff
signed short >> 16 = ffffffff ffff
signed short >> 17 = ffffffff ffff
signed short >> 18 = ffffffff ffff
signed short >> 19 = ffffffff ffff
signed short >> 20 = ffffffff ffff
signed short >> 21 = ffffffff ffff
signed short >> 22 = ffffffff ffff
signed short >> 23 = ffffffff ffff
signed short >> 24 = ffffffff ffff
signed short >> 25 = ffffffff ffff
signed short >> 26 = ffffffff ffff
signed short >> 27 = ffffffff ffff
signed short >> 28 = ffffffff ffff
signed short >> 29 = ffffffff ffff
signed short >> 30 = ffffffff ffff
signed short >> 31 = ffffffff ffff
signed short >> 32 = ffff8888 8888
unsigned short >> 00 = 00008888 8888
unsigned short >> 01 = 00004444 4444
unsigned short >> 02 = 00002222 2222
unsigned short >> 03 = 00001111 1111
unsigned short >> 04 = 00000888 0888
unsigned short >> 05 = 00000444 0444
unsigned short >> 06 = 00000222 0222
unsigned short >> 07 = 00000111 0111
unsigned short >> 08 = 00000088 0088
unsigned short >> 09 = 00000044 0044
unsigned short >> 10 = 00000022 0022
unsigned short >> 11 = 00000011 0011
unsigned short >> 12 = 00000008 0008
unsigned short >> 13 = 00000004 0004
unsigned short >> 14 = 00000002 0002
unsigned short >> 15 = 00000001 0001
unsigned short >> 16 = 00000000 0000
unsigned short >> 17 = 00000000 0000
unsigned short >> 18 = 00000000 0000
unsigned short >> 19 = 00000000 0000
unsigned short >> 20 = 00000000 0000
unsigned short >> 21 = 00000000 0000
unsigned short >> 22 = 00000000 0000
unsigned short >> 23 = 00000000 0000
unsigned short >> 24 = 00000000 0000
unsigned short >> 25 = 00000000 0000
unsigned short >> 26 = 00000000 0000
unsigned short >> 27 = 00000000 0000
unsigned short >> 28 = 00000000 0000
unsigned short >> 29 = 00000000 0000
unsigned short >> 30 = 00000000 0000
unsigned short >> 31 = 00000000 0000
unsigned short >> 32 = 00008888 8888
signed int >> 00 = 88888888
signed int >> 01 = c4444444
signed int >> 02 = e2222222
signed int >> 03 = f1111111
signed int >> 04 = f8888888
signed int >> 05 = fc444444
signed int >> 06 = fe222222
signed int >> 07 = ff111111
signed int >> 08 = ff888888
signed int >> 09 = ffc44444
signed int >> 10 = ffe22222
signed int >> 11 = fff11111
signed int >> 12 = fff88888
signed int >> 13 = fffc4444
signed int >> 14 = fffe2222
signed int >> 15 = ffff1111
signed int >> 16 = ffff8888
signed int >> 17 = ffffc444
signed int >> 18 = ffffe222
signed int >> 19 = fffff111
signed int >> 20 = fffff888
signed int >> 21 = fffffc44
signed int >> 22 = fffffe22
signed int >> 23 = ffffff11
signed int >> 24 = ffffff88
signed int >> 25 = ffffffc4
signed int >> 26 = ffffffe2
signed int >> 27 = fffffff1
signed int >> 28 = fffffff8
signed int >> 29 = fffffffc
signed int >> 30 = fffffffe
signed int >> 31 = ffffffff
signed int >> 32 = 88888888
unsigned int >> 00 = 88888888
unsigned int >> 01 = 44444444
unsigned int >> 02 = 22222222
unsigned int >> 03 = 11111111
unsigned int >> 04 = 08888888
unsigned int >> 05 = 04444444
unsigned int >> 06 = 02222222
unsigned int >> 07 = 01111111
unsigned int >> 08 = 00888888
unsigned int >> 09 = 00444444
unsigned int >> 10 = 00222222
unsigned int >> 11 = 00111111
unsigned int >> 12 = 00088888
unsigned int >> 13 = 00044444
unsigned int >> 14 = 00022222
unsigned int >> 15 = 00011111
unsigned int >> 16 = 00008888
unsigned int >> 17 = 00004444
unsigned int >> 18 = 00002222
unsigned int >> 19 = 00001111
unsigned int >> 20 = 00000888
unsigned int >> 21 = 00000444
unsigned int >> 22 = 00000222
unsigned int >> 23 = 00000111
unsigned int >> 24 = 00000088
unsigned int >> 25 = 00000044
unsigned int >> 26 = 00000022
unsigned int >> 27 = 00000011
unsigned int >> 28 = 00000008
unsigned int >> 29 = 00000004
unsigned int >> 30 = 00000002
unsigned int >> 31 = 00000001
unsigned int >> 32 = 88888888
signed long >> 00 = 0000000088888888
signed long >> 02 = 00000000e2222222
signed long >> 04 = 00000000f8888888
signed long >> 06 = 00000000fe222222
signed long >> 08 = 00000000ff888888
signed long >> 10 = 00000000ffe22222
signed long >> 12 = 00000000fff88888
signed long >> 14 = 00000000fffe2222
signed long >> 16 = 00000000ffff8888
signed long >> 18 = 00000000ffffe222
signed long >> 20 = 00000000fffff888
signed long >> 22 = 00000000fffffe22
signed long >> 24 = 00000000ffffff88
signed long >> 26 = 00000000ffffffe2
signed long >> 28 = 00000000fffffff8
signed long >> 30 = 00000000fffffffe
signed long >> 32 = 0000000088888888
signed long >> 34 = 00000000e2222222
signed long >> 36 = 00000000f8888888
signed long >> 38 = 00000000fe222222
signed long >> 40 = 00000000ff888888
signed long >> 42 = 00000000ffe22222
signed long >> 44 = 00000000fff88888
signed long >> 46 = 00000000fffe2222
signed long >> 48 = 00000000ffff8888
signed long >> 50 = 00000000ffffe222
signed long >> 52 = 00000000fffff888
signed long >> 54 = 00000000fffffe22
signed long >> 56 = 00000000ffffff88
signed long >> 58 = 00000000ffffffe2
signed long >> 60 = 00000000fffffff8
signed long >> 62 = 00000000fffffffe
signed long >> 64 = 0000000088888888
unsigned long >> 00 = 0000000088888888
unsigned long >> 02 = 0000000022222222
unsigned long >> 04 = 0000000008888888
unsigned long >> 06 = 0000000002222222
unsigned long >> 08 = 0000000000888888
unsigned long >> 10 = 0000000000222222
unsigned long >> 12 = 0000000000088888
unsigned long >> 14 = 0000000000022222
unsigned long >> 16 = 0000000000008888
unsigned long >> 18 = 0000000000002222
unsigned long >> 20 = 0000000000000888
unsigned long >> 22 = 0000000000000222
unsigned long >> 24 = 0000000000000088
unsigned long >> 26 = 0000000000000022
unsigned long >> 28 = 0000000000000008
unsigned long >> 30 = 0000000000000002
unsigned long >> 32 = 0000000088888888
unsigned long >> 34 = 0000000022222222
unsigned long >> 36 = 0000000008888888
unsigned long >> 38 = 0000000002222222
unsigned long >> 40 = 0000000000888888
unsigned long >> 42 = 0000000000222222
unsigned long >> 44 = 0000000000088888
unsigned long >> 46 = 0000000000022222
unsigned long >> 48 = 0000000000008888
unsigned long >> 50 = 0000000000002222
unsigned long >> 52 = 0000000000000888
unsigned long >> 54 = 0000000000000222
unsigned long >> 56 = 0000000000000088
unsigned long >> 58 = 0000000000000022
unsigned long >> 60 = 0000000000000008
unsigned long >> 62 = 0000000000000002
unsigned long >> 64 = 0000000088888888
signed long long >> 00 = 8888888888888888
signed long long >> 02 = e222222222222222
signed long long >> 04 = f888888888888888
signed long long >> 06 = fe22222222222222
signed long long >> 08 = ff88888888888888
signed long long >> 10 = ffe2222222222222
signed long long >> 12 = fff8888888888888
signed long long >> 14 = fffe222222222222
signed long long >> 16 = ffff888888888888
signed long long >> 18 = ffffe22222222222
signed long long >> 20 = fffff88888888888
signed long long >> 22 = fffffe2222222222
signed long long >> 24 = ffffff8888888888
signed long long >> 26 = ffffffe222222222
signed long long >> 28 = fffffff888888888
signed long long >> 30 = fffffffe22222222
signed long long >> 32 = ffffffff88888888
signed long long >> 34 = ffffffffe2222222
signed long long >> 36 = fffffffff8888888
signed long long >> 38 = fffffffffe222222
signed long long >> 40 = ffffffffff888888
signed long long >> 42 = ffffffffffe22222
signed long long >> 44 = fffffffffff88888
signed long long >> 46 = fffffffffffe2222
signed long long >> 48 = ffffffffffff8888
signed long long >> 50 = ffffffffffffe222
signed long long >> 52 = fffffffffffff888
signed long long >> 54 = fffffffffffffe22
signed long long >> 56 = ffffffffffffff88
signed long long >> 58 = ffffffffffffffe2
signed long long >> 60 = fffffffffffffff8
signed long long >> 62 = fffffffffffffffe
signed long long >> 64 = 8888888888888888
unsigned long long >> 00 = 8888888888888888
unsigned long long >> 02 = 2222222222222222
unsigned long long >> 04 = 0888888888888888
unsigned long long >> 06 = 0222222222222222
unsigned long long >> 08 = 0088888888888888
unsigned long long >> 10 = 0022222222222222
unsigned long long >> 12 = 0008888888888888
unsigned long long >> 14 = 0002222222222222
unsigned long long >> 16 = 0000888888888888
unsigned long long >> 18 = 0000222222222222
unsigned long long >> 20 = 0000088888888888
unsigned long long >> 22 = 0000022222222222
unsigned long long >> 24 = 0000008888888888
unsigned long long >> 26 = 0000002222222222
unsigned long long >> 28 = 0000000888888888
unsigned long long >> 30 = 0000000222222222
unsigned long long >> 32 = 0000000088888888
unsigned long long >> 34 = 0000000022222222
unsigned long long >> 36 = 0000000008888888
unsigned long long >> 38 = 0000000002222222
unsigned long long >> 40 = 0000000000888888
unsigned long long >> 42 = 0000000000222222
unsigned long long >> 44 = 0000000000088888
unsigned long long >> 46 = 0000000000022222
unsigned long long >> 48 = 0000000000008888
unsigned long long >> 50 = 0000000000002222
unsigned long long >> 52 = 0000000000000888
unsigned long long >> 54 = 0000000000000222
unsigned long long >> 56 = 0000000000000088
unsigned long long >> 58 = 0000000000000022
unsigned long long >> 60 = 0000000000000008
unsigned long long >> 62 = 0000000000000002
unsigned long long >> 64 = 8888888888888888