[정답] 34. 쉬프트 연산자
◈ 기본 연습
1. 다음 프로그램의 출력 결과를 예측하시오.
#include <stdio.h>
int main()
{
unsigned u = 5;
int
i = -5;
printf("%d \n",u<<3);
printf("%d \n",i<<3);
return
0;
}
답:
40
-40
<< 연산을 한 번 하면 2를 곱한 효과를 갖습니다.
따라서 3자리 왼쪽으로 이동하였으므로 2의 3승인 8을 곱한 효과를 갖습니다.
2. 다음 프로그램의 출력 결과를 예측하고 이유를 설명하시오.
참고:
unsigned int 형식의 0x80000000은 2147483648
int 형식의 0x80000000은 -2147483648
#include <stdio.h>
int main()
{
unsigned u1 = 100;
unsigned u2 = 0x80000000;
int
i1 = 100;
int
i2 = 0x80000000;
printf("%d \n",u1>>3);
printf("%d \n",i1>>3);
printf("%d %#X\n",u2>>3,
u2>>3);
printf("%d %#X\n",i2>>3,
i2>>3 );
return
0;
}
답:
12
12
268435456 0x10000000
-268435456 0xF0000000
>> 연산을 한 번 하면 2로 나눈 효과를 갖습니다.
따라서 3자리 오른쪽으로 이동하였으므로 2의 3승인 8로 나눈 효과를 갖습니다.
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
[정답] 디딤돌 C언어 40. 선택문(switch case) (0) | 2016.04.30 |
---|---|
[정답] 디딤돌 C언어 39. 조건문(if, else) (0) | 2016.04.30 |
[정답] 디딤돌 C언어 38. 정리하기 (연산자) (0) | 2016.04.30 |
[정답] 디딤돌 C언어 36. 증감 연산자 (0) | 2016.04.30 |
[정답] 디딤돌 C언어 35. 대입 연산자 (0) | 2016.04.30 |
[정답] 디딤돌 C언어 33. 비트 연산자 ^를 이용한 암호화 (0) | 2016.04.30 |
[정답] 디딤돌 C언어 32. 비트 연산자 (0) | 2016.04.30 |
[정답] 디딤돌 C언어 31. 비교 연산자 (0) | 2016.04.30 |
[정답] 디딤돌 C언어 29. 산술 연산자 (0) | 2016.04.30 |
[정답] 디딤돌 C언어 28. 정리하기 (표준 입출력) (0) | 2016.04.30 |