java에서..

urmajest의 이미지

'>>' operator는 쉬프트하고 빈 자리를 sign bit으로 채우고
'>>>' operator는 zero bit으로 채운다고 책에 나와있는데요

실험을 해보려고 간단한 프로그램을 작성해봤어요

short i = -8;
System.out.println( i >> 2);
System.out.println( i>>>2);

그런데 실행결과는 둘 다 -2 가 나오네요

왜 그렇죠?

-8 은 2s complement로 하면
11111111 11111000 이니깐

>>>2로 하면
00111111 11111110 이 되어서 이건 양수가 나와야 하는 것 아닌가요?

그럼 ^^

iskraman의 이미지

int i = -8; 
System.out.println( i >> 2 ); 
System.out.println( i >>> 2);

아래부분 이상없이 저는 잘 나오는데요...

System.out.println( i >>> 2);

결과값이 4171822 라고 양수로 나오네요...
컴파일 다시 시켜보세요 :shock:

urmajest의 이미지

제가 실수를 했나보네요..

에구..감사합니다

이건 지워야하나 -_-