티스토리 뷰

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언어 코딩도장 / 위키백과

댓글
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
최근에 올라온 글
글 보관함
Total
Today
Yesterday