문제 1

다음 그림은 비트 연산자를 활용한 코드의 일부분이다.

c = -1; d = -1;

System.out.println("c >>> 2 = " + (c >>> 2));
System.out.println("d >>> 2 = " + (d >>> 2));

이 코드의 실행결과는 다음과 같다.

c >>> 2 = 1073741823
d >>> 2 = 4611686018427387903

왜 이러한 결과가 나오게 되었는지 상세히 설명하세요

Answer

64bit 운영체제에서 int형은 32bit, long형은 64bit로 표현된다.
이때, -1을 표현하면 이 bit들이 모두 1로 채워지는데,
이를 비트연산자 »> 을 이용하여 이동시키면 앞의 두 비트가 0으로 채워진다.
컴퓨터는 이를 양수로 인식하게 되고, 이를 출력하면 출력값 같이 결과가 나온다.

태그:

카테고리:

업데이트: