-
C언어 시프트 연산자Visual Studio/C 기초 2013. 10. 1. 16:34
시프트 연산자는 정수형 변수 값의 비트를 지정된 횟수만큼 이동시킵니다. << 연산자는 비트를 왼쪽으로 이동시키고 >> 연산자는 비트를 오른쪽으로 이동시킵니다.
예를 들어 10진수로 12의 값을 가지는 2진수 00001100을 오른쪽으로 2번 이동시키면 10진수 3에 해당하는 2진수 00000011이 됩니다.
특별한 상황에서는 값을 2의 제곱으로 곱하거나 나누는 경우에 시프트 연산자를 사용할 수 있습니다. 정수 값을 왼쪽으로 n번 이동시키는 것은 2n을 곱하는 것과 같고, 정수 값을 오른쪽으로 n번 이동시키는 것은 2n으로 나누는 것과 같습니다.
값이 커지면 오버플로가 발생하기도 합니다.
예제를 보겠습니다.
#include <stdio.h>
main()
{
unsigned char y, x=255;
int count;
printf("10진수\t\t왼쪽으로 시프트\t\t결과\n");
for(count=1;count<8;count++)
{
y=x<<count;
printf("%d\t\t%d\t\t\t%d\n",x,count,y);}
puts("");
printf("10진수\t\t오른쪽으로 시프트\t결과\n");
for(count=1;count<8;count++)
{
y=x>>count;
printf("%d\t\t%d\t\t\t%d\n",x,count,y);
}
}'Visual Studio > C 기초' 카테고리의 다른 글
int argc, char *argv[] (0) 2013.10.06 C언어 memset(), memcpy(), memmove() (0) 2013.09.13 C언어 free() (0) 2013.09.13 C언어 realloc() (0) 2013.09.11 C언어 calloc() (0) 2013.09.10