[JV]제2장 연습문제 이론문제 10번
결과
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 |
연산 |
i |
j |
k |
1 |
i += k+j |
14 |
10 |
3 |
2 |
i = (j - i++) * 4 - 3 |
-19 |
10 |
3 |
3 |
j = ++k + --j |
-19 |
13 |
4 |
4 |
j /= 2 |
-19 |
6 |
4 |
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이다.