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 >>>
   50   51   52   53   54   55   56   57   58   59   60