16. 16
연산자 사용 방법과 결과
left & right
& 0011 0000 0011 1001 // left
& 1101 0100 0011 0001 // right
-----------------------------------------------
& 0001 0000 0011 0001 // result(4145)
비트 연산자
17. 17
연산자 사용 방법과 결과
left | right
| 0011 0000 0011 1001 // left
| 1101 0100 0011 0001 // right
-----------------------------------------------
| 1111 0100 0011 1001 // result(62521)
비트 연산자
18. 18
연산자 사용 방법과 결과
~left
~ 0011 0000 0011 1001 // left
-----------------------------------------------
~ 1100 1111 1100 0110 // result(-12346)
비트 연산자
19. 19
연산자 사용 방법과 결과
left << 2 (* 2n의 효과)
0011 0000 0011 1001 // left
0110 0000 0111 0010 // left << 1
1100 0000 1110 0100 // left << 2 (49380)
비트 연산자
20. 20
연산자 사용 방법과 결과
left >> 2 (* 2-n의 효과)
0011 0000 0011 1001 // left
0001 1000 0001 1100 // left >> 1
0000 1100 0000 1110 // left >> 2 (3086)
비트 연산자
21. 21
연산자 사용 방법과 결과
result = (condition) ? (true val) : (false val)
3항 연산자
25. 25
연산자 동작 개념
연산 없이 출력하는 경우
1. number 변수의 값을 EAX에 저장
2. printf에 매개변수를 위해 스택에 저장(param 2)
3. printf에 매개변수를 위해 스택에 저장(param 1)
4. printf() 호출
5. ESP(Extended Stack Pointer) 이동
전ㆍ후위 증감 연산자
26. 26
연산자 동작 개념
후위 연산의 경우
1. 현재 number의 값을 [ebp-0D0h]에 저장
2. number의 값을 ecx에 저장하고 1을 더한 후
number에 다시 저장
전ㆍ후위 증감 연산자
27. 27
연산자 동작 개념
전위 연산의 경우
1. 현재 number의 값을 [ebp-0D0h]에 저장
1. number의 값을 eax에 저장하고 1을 더한 후
number에 다시 저장
전ㆍ후위 증감 연산자