#include <cstdio> using namespace std; // シフト演算の確認 int main(){ int ii; // char(1バイト)型での確認 signed char ca; unsigned char cb; for(ii = 0; ii <= 32; ii++){ ca = (char)0x88; //エラー回避のためキャスト ca >>= ii; printf("signed char >> %02d = %08x %02x\n", ii, (int)ca, (unsigned char)ca); } for(ii = 0; ii <= 32; ii++){ cb = (unsigned char)0x88; //エラー回避のためキャスト cb >>= ii; printf("unsigned char >> %02d = %08x %02x\n", ii, (int)cb, (unsigned char)cb); } // short(2バイト)型での確認 signed short sa; unsigned short sb; for(ii = 0; ii <= 32; ii++){ sa = (short)0x8888; //エラー回避のためキャスト sa >>= ii; printf("signed short >> %02d = %08x %04x\n", ii, (int)sa, (unsigned short)sa); } for(ii = 0; ii <= 32; ii++){ sb = (unsigned short)0x8888; //エラー回避のためキャスト sb >>= ii; printf("unsigned short >> %02d = %08x %04x\n", ii, (int)sb, (unsigned short)sb); } // int(4バイト)型での確認 signed int ia; unsigned int ib; for(ii = 0; ii <= 32; ii++){ ia = 0x88888888; ia >>= ii; printf("signed int >> %02d = %08x\n", ii, ia); } for(ii = 0; ii <= 32; ii++){ ib = 0x88888888; ib >>= ii; printf("unsigned int >> %02d = %08x\n", ii, ib); } /* // long(4バイト)型での確認 signed long la; unsigned long lb; for(ii = 0; ii <= 32; ii++){ la = 0x88888888; la >>= ii; printf("signed long >> %02d = %08x\n", ii, la); } for(ii = 0; ii <= 32; ii++){ lb = 0x88888888; lb >>= ii; printf("unsigned long >> %02d = %08x\n", ii, lb); } */ // long(8バイト)型での確認 signed long la; unsigned long lb; for(ii = 0; ii <= 64; ii+=2){ la = 0x8888888888888888; la >>= ii; printf("signed long >> %02d = %016lx\n", ii, la); } for(ii = 0; ii <= 64; ii+=2){ lb = 0x8888888888888888; lb >>= ii; printf("unsigned long >> %02d = %016lx\n", ii, lb); } // long long(8バイト)型での確認 signed long long lla; unsigned long long llb; for(ii = 0; ii <= 64; ii+=2){ lla = 0x8888888888888888; lla >>= ii; printf("signed long long >> %02d = %016llx\n", ii, lla); } for(ii = 0; ii <= 64; ii+=2){ llb = 0x8888888888888888; llb >>= ii; printf("unsigned long long >> %02d = %016llx\n", ii, llb); } return 0; }
Standard input is empty
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