(※충남대학교 컴퓨터융합학부 2020 시스템프로그래밍 권진세교수님 수업을 듣고 정리한 내용입니다)
* Boolean Algebra(불 대수)
- 논리를 표현하기 위한 대수학
- 컴퓨터 내부의 비트 정보 표시에 사용하는 변수들은 0 또는 1을 가진다
- 2진수의 표시 및 연산에 유용
① AND(&)
& | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
AND는 두 변수 중 하나라도 0이 있으면 결과가 0이다. 즉 1이 나오려면 둘 다 1인 경우밖에 없다.
② OR(|)
| | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 1 |
OR는 두 변수 중 하나라도 1이 있으면 결과가 1이다.
③ NOT(~)
~ | 0 |
0 | 1 |
1 | 0 |
~0은 1이고 ~1은 0이다.
④ Exclusive OR(XOR, ^)
^ | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0 |
두 변수가 같으면 0 다르면 1이다.
* 비트 연산자
- shift 연산자 (<<, >>)
: 어셈블리 언어나 기계어의 프로그램 작성에서 러지스터 또는 기억 장소 내에 비트 값들을 왼쪽이나 오른쪽으로 이동시키는 것
- Left shift (x << y)
: 좌측을 y 개수만큼 없애고 우측에 y 개수만큼 0을 채워줌
- Right shift(x >> y)
: 우측을 y 개수만큼 없애고 좌측에 y 개수만큼 0을 채워줌
이때 논리적 자리 이동의 경우 좌측 맨 앞자리를 무조건 0으로, 산술 자리 이동의 경우 현 x의 부호를 유지
만약 x의 부호가 양수라면 0, 음수라면 1을 좌측 맨 앞자리에 채우게 됨
- 예시
(Argument) x | 1010 0010 |
x << 3 | 0001 0000 |
(Logical) x >> 2 | 0010 1000 |
(Arithmetic) x >> 2 | 1110 1000 |
728x90
'System Programming > Data Lab' 카테고리의 다른 글
Datalab bits.c 함수 설명 및 풀이 (0) | 2022.01.05 |
---|