티스토리 뷰

2021.02.08.월
조건 연산자
(조건식) ? a : b
✔ 조건식이 참이면 a를 실행, 거짓이면 b를 실행한다.
✔ 조건 연산자는 간단하게 조건문을 구현할 수 있다는 장점이 있으나, 가독성이 떨어지기 때문에 필요할 때만 사용해야 한다.
#include <stdio.h>
int main(void){
int result=0;
int a=10, b=20;
(a > b) ? (result=a) : (result=b) ;
printf("%d와 %d 중 큰 값은 %d 입니다",a,b,result);
//10과 20 중 큰 값은 20 입니다
return 0;
}
비트 연산자
비트 연산자 | 비트 연산자 | ||
& | 비트 AND | &= | 비트 AND 연산 후 할당 |
| | 비트 OR | |= | 비트 OR 연산 후 할당 |
^ | 비트 XOR | ^= | 비트 XOR 연산 후 할당 |
~ | 비트 NOT | <<= | 비트를 왼쪽으로 시프트한 후 할당 |
<< | 비트를 왼쪽으로 한 칸 이동 | >>= | 비트를 오른쪽으로 시프트한 후 할당 |
>> | 비트를 오른쪽으로 한 칸 이동 |
비트 연산자 &, ㅣ, ^
#include <stdio.h>
int main()
{
unsigned int num1 = 1; // 0000 0001
unsigned int num2 = 3; // 0000 0011
printf("%d\n", num1 & num2); // 0000 0001: 01과 11을 비트 AND하면 01이 됨
printf("%d\n", num1 | num2); // 0000 0011: 01과 11을 비트 OR하면 11이 됨
printf("%d\n", num1 ^ num2); // 0000 0010: 01과 11을 비트 XOR하면 10이 됨
printf("%d\n", ~num1); // 1111 1110: 000 0001을 비트 OR하면 0은 1로, 1은 0으로 반전
return 0;
}
✔ 비트 연산자 & : 비교하는 비트가 모두 1인 경우 1 반환, 그 외에는 0 반환 (AND)
✔ 비트 연산자 | : 비교하는 비트가 모두 0인 경우 0 반환, 그 외에는 1 반환 (OR)
✔ 비트 연산자 ^ : 비교하는 비트의 두개가 같으면 0 반환, 다르면 1 반환 (XOR)
✔ 비트 연산자 ~ : 0은 1로, 1은 0으로 반전
비트 연산자 <<, >>
✔ 10진수일 때를 기준으로 말하면 왼쪽 비트 시프트(<<) 는 2배, 오른쪽 비트 시프트(>>)는 1/2배의 연산을 수행한다.
#include <stdio.h>
int main(){
int num1 = 3;
printf("%d\n", num1<<1 ); // 3*2=6
printf("%d\n", num1<<2 ); // 3*2*2=12
printf("%d\n", num1<<3 ); // 3*2*2*2=24
return 0;
}
✔ 왼쪽 비트 시프트(<<n)는 사용하면 왼쪽으로 숫자들이 n칸씩 밀리고 오른쪽의 남은 비트는 0으로 채워진다.
✔ 예를 들어 3은 2진수로 표현하면 0000 0011 인데, 왼쪽 비트 시프트(<<1)로 하나 이동하면 0000 0110이 된다.
✔ 이를 다시 10진수로 표현하면 6이므로, 결국 3의 2배 값이다.
#include <stdio.h>
int main(){
int num2 = 40;
printf("%d\n", num2>>1); // 40/2=20
printf("%d\n", num2>>2); // 40/2/2=10
printf("%d\n", num2>>3); // 40/2/2/2=5
return 0;
}
✔ 오른쪽 비트 시프트(>>n)는 사용하면 오른쪽으로 숫자들이 n칸씩 밀리고, 왼쪽의 남은 비트는 0으로 채워진다
✔ 예를 들어 40은 2진수로 표현하면 0010 1000인데, 오른쪽 비트 시프트(>>1)로 하나 이동하면 0001 0100이 된다.
✔ 이를 다시 10진수로 표현하면 20이므로, 결국 40의 1/2배 값이다.
연산자 우선순위와 연산 방향
✔ 연산자가 같이 사용될 때에는 우선순위에 의해 연산 순서가 정해진다. [참고링크] C언어 코딩 도장
✔ 보통 연산자는 왼쪽에서 오른쪽으로 계산하지만, 반대 방향으로 계산이 이루어지는 경우도 있다.
✔ 반대 방향으로 연산되는 경우는, 전위 증감연산자가 대표적이다. [참고링크] C언어 코딩 도장
[참고] 한빛미디어-혼자 공부하는 C언어 유튜브 강의 / 엘리스 트랙-혼자 공부하는 C언어 / 길벗-C언어 코딩도장 / 위키백과
'BackEnd > C' 카테고리의 다른 글
[4일차] 2. for문/while문/do-while문 (0) | 2021.02.14 |
---|---|
[4일차] 1. if문/switch문 (0) | 2021.02.13 |
[3일차] 2. sizeof()/복합대입/콤마연산자 (0) | 2021.02.13 |
[3일차] 1. 산술/증감/비교/형변환 연산자 (0) | 2021.02.13 |
[2일차] 3. 입력 함수 scanf( ) (0) | 2021.02.13 |