대학 수강과목/자바

[JV]제2장 연습문제 이론문제 10번

흐이애 2014. 9. 14. 19:17

p.109
10. int i=1, j=10, j=3이라고 하였을 경우 아래의 각 연산을 마친 후 i, j, k 각 변수에 저장되는 값은?




결과


i += k+j

i = 14, j = 10, k = 3

i = (j - i++) * 4 - 3

i = -19, j = 10, k = 3

j = ++k + --j

i = -19, j = 13, k = 4

j /= 2

i = -19, j = 6, k = 4

j >>= 1

i = -19, j = 3, k = 4

k = i <<j

i = -19, j = 3, k = -152

k %= 3

i = -19, j = 3, k = -2

k = j&i

i = -19, j = 3, k = 1

j = k^j

i = -19, j = 2, k = 1

i = i | 0xff

i = -1, j = 2, k = 1



 Number

연산 

 1

 i += k+j

14

10

3

 2

 i = (j - i++) * 4 - 3

-19

10 

 3

 j = ++k + --j

-19

13 

 4

 j /= 2

-19

 5

 j >>= 1

-19

3

4

 6

 k = i <<j

-19

3

 -152

 7

 k %= 3

-19

3

 -2

 8

 k = j&i

-19

3

 1

 9

 j = k^j

-19

2

 1

 10

 i = i | 0xff

-1

2

 1



해설



5. >>1 는 2로 나누는 효과.


6. <<3 는 2로 3번 곱하는 효과. 즉, 곱하기 2의 3승.


8. i = -19 이므로, 


19 = 0000 0000    0000 0000    ...    0000 0000    0001 0011


의 2의 보수를 취해주어야 한다.


즉 -19는 2진수로 

1111 1111    1111 1111    ...    1111 1111    1110 1101

이다.


j : 0000 0000    0000 0000    ...    0000 0000    0000 0011

&    i : 1111 1111    1111 1111    ...    1111 1111    1110 1101

---------------------------------------------------

    0000 0000    0000 0000    ...    0000 0000    0000 0001

= 1


따라서 k = j&i 에서 k의 값은 1이다.


9.

k : 0000 0000    0000 0000    ...    0000 0000    0000 0001

^    j :  0000 0000    0000 0000    ...    0000 0000    0000 0011

---------------------------------------------------

    0000 0000    0000 0000    ...    0000 0000    0000 0010

= 2


따라서 j = k^j에서 j의 값은 2이다.



10


    i : 1111 1111    1111 1111    ...    1111 1111    1110 1101

|    0xff : 0000 0000    0000 0000    ...    0000 0000    1111 1111

-----------------------------------------------------

  1111 1111    1111 1111    ...    1111 1111    1111 1111

이를 2의 보수 취하면

  0000 0000    0000 0000    ...    0000 0000    0000 0001

= 1


따라서 i = i | 0xff에서 i 의 값은 -1이다.



반응형