11. bool 자료형 사용하기
- boolean
* #include <stdbool.h>
bool b1 = true;
if ( b1 == true )
printf ( 참 ) ;
else
printf( 거짓 ) ;
- bool 자료형의 크기
printf(" bool의 크기 : %d", sizeof(bool));
- bool 자료형과 논리 연산자
- true, false를 문자열로 출력
- if 조건문에서 bool 자료형 사용
핵심 정리
1. 비교 연산자
2. 삼항 연산자
- 조건식 ? 값1 (true) : 값2 (false) ;
3. 논리 연산자
4. bool 연산자
12. 비트 연산자
연산자 | 설명 |
---|---|
& | 비트 AND |
| | 비트 OR |
^ | 비트 XOR (배타적 OR, Exclusive OR) |
~ | 비트 NOT |
<< | 비트를 왼쪽으로 시프트 |
>> | 비트를 오른쪽으로 시프트 |
&= | 비트 AND 연산 후 할당 |
|= | 비트 OR 연산 후 할당 |
^= | 비트 XOR 연산 후 할당 |
<<= | 비트를 왼쪽으로 시프트한 후 할당 |
>>= | 비트를 오른쪽으로 시프트한 후 할당 |
- 부호 있는 자료형의 비트 연산
1000 0000 ( -128 )
>> 2
---------------------
1110 0000 ( - 32 )
- 연산자 우선순위
우선순위 | 연산자 | 설명 | 결합 법칙(방향) |
---|---|---|---|
1 | x++ x-- () [] -> | 증가 연산자(뒤, 후위) 감소 연산자(뒤, 후위) 함수 호출 배열 첨자 포인터로 요소 선택 | → |
2 | ++x --x +x -x ! ~ (자료형) *x &x sizeof | 증가 연산자(앞, 전위) 감소 연산자(앞, 전위) 단항 덧셈(양의 부호) 단항 뺄셈(음의 부호) 논리 NOT 비트 NOT 자료형 캐스팅 포인터 x 역참조 x의 주소 자료형의 크기 | ← |
3 | * / % | 곱셈 나눗셈 나머지 | → |
4 | + - | 덧셈 뺄셈 | → |
5 | << >> | 비트를 왼쪽으로 시프트 비트를 오른쪽으로 시프트 | → |
6 | < <= > >= | 작음 작거나 같음 큼 크거나 같음 | → |
7 | == != | 같음 다름 | → |
8 | & | 비트 AND | → |
9 | ^ | 비트 XOR | → |
10 | | | 비트 OR | → |
11 | && | 논리 AND | → |
12 | || | 논리 OR | → |
13 | ? : | 삼항 연산자 | ← |
14 | = += -= *= /= %= <<= >>= &= ^= |= | 할당 덧셈 후 할당 뺄셈 후 할당 곱셈 후 할당 나눗셈 후 할당 나머지 연산 후 할당 비트를 왼쪽으로 시프트한 후 할당 비트를 오른쪽으로 시프트한 후 할당 비트 AND 연산 후 할당 비트 XOR 연산 후 할당 비트 OR 연산 후 할당 | ← |
15 | , | 쉼표(콤마) 연산자 | → |
- 비트 XOR 연산자를 이용한 암호화
int plane = 100;
int key = 57;
int encrypted = plane ^ key ;
printf("%d", encrypted) ; // 93
int decrypted = encrypted ^ key ; // 복호화
printf("%d", decrypted ); // 100 : 평문 plane과 같음
- 두 변수의 값을 바꾸는 코드
int a = 10 ;
int b = 20 ;
int temp ;
temp = a ;
a = b ;
b = temp ;
printf ( "%d", a ) ;
printf ( "%d", b ) ;
* 임시 변수 없이 비트 XOR 연산자를 세번 사용하여 두 변수의 값을 바꾸는 방법
int a = 10; // 0000 1010
int b = 20; // 0001 0100
a = a ^ b;
// 0000 1010
// 0001 0100 XOR
// ----------
// 0001 1110 = > 24
b = a ^ b;
// 0001 1110
// 0001 0100 XOR
// ----------
// 0000 1010 => 10
a = a ^ b;
// 0001 1110
// 0000 1010 XOR
// ---------
// 0001 0100 = > 20
printf("%d\n", a);
printf("%d\n", b);
'Basic > C' 카테고리의 다른 글
08. C언어 기초 보기 연습문제 (0) | 2016.08.30 |
---|---|
07. C언어 기초 보기7 (0) | 2016.08.30 |
05. C언어 기초 보기5 (0) | 2016.08.30 |
04. C언어 기초 보기4 (0) | 2016.08.29 |
03. C언어 기초 보기3 (0) | 2016.08.29 |