반응형
비트연산의 기초 연산자 4개 예제 코드
32비트 PC는 아래와 같이 총 비트 갯수가 32개이다.
비트 연산을 해서 결과값을 int형으로 확인
AND연산 (둘다 1이어야 1을 반환) "&"
0 | & | 0 | 0반환 |
0 | & | 1 | 0반환 |
1 | & | 0 | 0반환 |
1 | & | 1 | 1반환 |
#include <stdio.h>
int main(void)
{
int num1 = 15; // 00000000 00000000 00000000 00001111
int num2 = 20; // 00000000 00000000 00000000 00010100
int num3 = num1 & num2; // 00000000 00000000 00000000 00000100
printf("AND연산 결과 : %d", num3);
}
* num2 &= 3 의미 : num2에 0000 0101을 AND연산해라
==========================================
OR연산 (둘중 하나라도 1이면, 1을 반환) "|"
0 | | | 0 | 0반환 |
0 | | | 1 | 1반환 |
1 | | | 0 | 1반환 |
1 | | | 1 | 1반환 |
#include <stdio.h>
int main(void)
{
int num1 = 15; // 00000000 00000000 00000000 00001111
int num2 = 20; // 00000000 00000000 00000000 00010100
int num3 = num1 | num2; // 00000000 00000000 00000000 00011111
printf("OR연산 결과 : %d", num3);
}
* num2 |= 3 의미 : num2에 0000 0101을 OR연산해라
==========================================
XOR연산 (두개가 같으면 0반환, 두개가 다르면 1반환) "^"
0 | ^ | 0 | 0반환 |
0 | ^ | 1 | 1반환 |
1 | ^ | 0 | 1반환 |
1 | ^ | 1 | 1반환 |
#include <stdio.h>
// AND연산자
int main(void)
{
int num1 = 15; // 00000000 00000000 00000000 00001111
int num2 = 20; // 00000000 00000000 00000000 00010100
int num3 = num1 ^ num2; // 00000000 00000000 00000000 00011011
printf("OR연산 결과 : %d", num3);
}
NOT연산 (서로 다른 값을 반환) "~"
~ | 0 | 1반환 |
~ | 1 | 0반환 |
#include <stdio.h>
int main(void)
{
int num1 = 15; // 00000000 00000000 00000000 00001111
int num2 = ~num1; // 11111111 11111111 11111111 11110000
printf("NOT연산 결과 : %d", num2);
}
비트를 좌우로 한칸씩 이동시키는 Shift 연산자에 대해서는 아래 참고.
https://ansan-survivor.tistory.com/1174
반응형
'C언어 \ C++' 카테고리의 다른 글
[C언어] C언어의 조건문 if else / do while / AND 비교연산 예제 코드 유저에게 입력받아 계산하는 함수 예시 (덧셈, 뺄셈, 나눗셈, 곱셈) (0) | 2022.01.09 |
---|---|
[C언어] 비트연산자 Shift 예제 (<<, >> 한 비트씩 움직이기) (2) | 2022.01.09 |
[C언어] c언어 입력한대로 막대 별찍기 (0) | 2021.11.16 |
[C언어] c언어 소문자 대문자 변환, 대문자 소문자 변환 (0) | 2021.11.15 |
[C언어] c언어 char -> int 변환 (C언어 문자열 정수 변환, 아스키코드 변환) (0) | 2021.11.15 |