int y = x >> 1;
WriteLine($"{y,11}, {Convert.ToString(y, 2).PadLeft(32, '0'),32}");
int z = x >>> 1;
WriteLine($"{z,11}, {Convert.ToString(z, 2).PadLeft(32, '0'),32}");
}
}
실행 결과
-4, 11111111111111111111111111111100
-2, 11111111111111111111111111111110
2147483646, 01111111111111111111111111111110
앞의 코드에서 x의 초깃값은 -4이며, 이를 이진수로 나타내면 11111111 11111111 11111111 11111100입니다. 먼저 x에 산술 오른쪽 시프트 연산자( >>)를 적용하면 최상위 비트(부호 비트)를 유지한 채 한 비트씩 오른쪽으로 이동합니다. 따라서 결과는 11111111 11111111 11111111 11111110이 되며, 이는 십진수로 -2에 해당합니다.