반응형
비트연산의 Shift는 비트를 우측, 좌측으로 이동시켜주는 연산자이다.
아래 예시를 보면 쉽게 이해할 수 있다.
예를들어 0001 을 << 연산하면 좌측으로 1칸 이동하는 것이고, >> 연산하면 우측으로 이동시키는 것이다.
<좌측으로 Shift 연산>
#include<stdio.h>
#include<string.h>
int main()
{
int num = 15; // 00000000 00000000 00000000 00001111
int result1 = num << 1; // 00000000 00000000 00000000 00011110
int result2 = num << 2; // 00000000 00000000 00000000 00111100
int result3 = num << 3; // 00000000 00000000 00000000 01111000
printf("왼쪽으로 1칸 이동 : %d\n", result1);
printf("왼쪽으로 2칸 이동 : %d\n", result2);
printf("왼쪽으로 3칸 이동 : %d\n", result3);
return 0;
}
반응형
<우측으로 Shift 연산>
#include<stdio.h>
#include<string.h>
int main()
{
int num = 15; // 00000000 00000000 00000000 00001111
int result1 = num >> 1; // 00000000 00000000 00000000 00000111
int result2 = num >> 2; // 00000000 00000000 00000000 00000011
int result3 = num >> 3; // 00000000 00000000 00000000 00000001
printf("오른쪽으로 1칸 이동 : %d\n", result1);
printf("오른쪽으로 2칸 이동 : %d\n", result2);
printf("오른쪽으로 3칸 이동 : %d\n", result3);
return 0;
}
* 주의사항 *
">>" 연산자는 일반적으로 안쓰는 것이 좋다. (호환성이 부족, 다만 CPU의 호환성 여부를 알고 있다면 사용가능)
연산자는 CPU따라 다른데, MSB(가장 왼쪽 끝 비트)에 0을 채울수도 있고, 1을 채울 수도 있다. 대부분의 인텔 CPU는 아래와 같은 결과를 얻을 수 있지만, AMD CPU는 다른결과를 얻을 수 있다.
간혹 일부 CPU는 >> 연산시 0을 가져오는 CPU들도 있다.
11110000 >> 1 했을 때, 결과로
01111000 이 나올 수 있다. (양수)
이 점을 잘 유의해야 한다.
비트연산자 AND, OR, XOR, NOT 에 대해서는 아래 참고
https://ansan-survivor.tistory.com/1173
반응형
'C언어 \ C++' 카테고리의 다른 글
[C언어] printf 함수, scanf 함수 사용법. 입력함수 출력함수 사용법 (0) | 2022.01.09 |
---|---|
[C언어] C언어의 조건문 if else / do while / AND 비교연산 예제 코드 유저에게 입력받아 계산하는 함수 예시 (덧셈, 뺄셈, 나눗셈, 곱셈) (0) | 2022.01.09 |
[C언어] C언어 비트연산자 AND, OR, NOR, NOT 예제 코드 (|= , &= , ~ 사용법) (0) | 2022.01.09 |
[C언어] c언어 입력한대로 막대 별찍기 (0) | 2021.11.16 |
[C언어] c언어 소문자 대문자 변환, 대문자 소문자 변환 (0) | 2021.11.15 |