1. 곱하기
2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로
지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 반으로 줄어드는데,
왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고,
오른쪽 비트시프트(>>)가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가된다.
범위(32비트)를 넘어서 이동되는 비트는 삭제된다.
int a=10;
printf("%d", a<<1); //10을 2배 한 값인 20 이 출력된다.
printf("%d", a>>1); //10을 반으로 나눈 값인 5 가 출력된다.
printf("%d", a<<2); //10을 4배 한 값인 40 이 출력된다.
printf("%d", a>>2); //10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다.
2. 거듭제곱
int a=1, b=10;
printf("%d", a << b); //210 = 1024 가 출력된다.
'Programming > 언어기초상식' 카테고리의 다른 글
[기초-비트단위논리연산] 비트단위 연산 (0) | 2021.02.22 |
---|---|
[기초-논리연산] XOR 연산 (0) | 2021.02.22 |
[기초-출력변환] n진수 출력 (0) | 2021.02.20 |
[기초 데이터형] 데이터형 출력 (0) | 2021.02.20 |
기초 입출력 - 칸을 지정한 입출력, 공백을 포함한 문장 출력 (0) | 2021.02.20 |
댓글