(※충남대학교 컴퓨터융합학부 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

+ Recent posts