Page 55 - 든든한 Java programming 도서 미리보기
P. 55
CHAPTER 2? 변수와 연산자 49
10(10) & 2(10) = 2(10)
00001010&00000010=00000010
10(10) | 2(10) = 10(10)
00001010|00000010=00001010
10(10) ^ 2(10) = 8(10)
00001010^00000010=00001000
~ 연산에서 음수 값이 나오는 이유는 2의 보수를 이용한 표현식 때문이다.
~10(10) = -11(10)
~00001010=11110101
양의 쉬프트 연산에서 >> 와 >>>가 같은 결과 값을 보이지만 음의 시프트 연산에서 다
른 결과 값을 보이는 이유는 >>의 경우 비트 이동시 기존 최상위 비트의 값을 이용하여
최상위 비트를 채우지만 >>>는 항상 최상위 비트를 0으로 채우기 때문이다.
10(10) << 2(10) = 40(10)
0 0 0 0 1 0 1 0 << 2 = 0 0 1 0 1 0 0 0
10(10) >> 2(10) = 2(10)
0 0 0 0 1 0 1 0 >> 2 = 0 0 0 0 0 0 1 0
10(10) >>> 2(10) = 2(10)
0 0 0 0 1 0 1 0 >>> 2 = 0 0 0 0 0 0 1 0
-10(10) >> 2(10) = -3(10)
1 1 1 1 0 1 1 0 >>> 2 = 1 1 1 1 1 1 0 1
-10(10) >>> 2(10) = 1073741821(10) 2=00111101
1 1 1 1 0 1 1 0 >>>