原作: int 変数 = 0x8000FFFF; int r; r = 変数 >> 4; 修正案 unsigned int 変数 = 0x8000FFFF; 解説: shift 演算子の対象が符号付き変数なので、 サインビットをひきずる可能性があります。 shift 演算の対象となる変数には unsigned を付ける事を推奨します。