본문 바로가기
Computer Science/Computer Architecture

[컴퓨터 구조] 기본 논리 연산을 활용한 응용 논리 연산

by ggyongi 2021. 10. 25.
반응형

기본적인 논리연산(AND, OR, XOR, NOT)을 안다는 가정하에

다음 네 가지를 살펴보자.

 

첫번째. 1과 OR연산하기

기존 비트가 0이었다면 0 OR 1 -> 1

기존 비트가 1이었다면 1 OR 1 -> 1

=> 무조건 1이 나온다는 것이 특징!

 

두번째. 1과 AND연산하기

기존 비트가 0이었다면 0 AND 1 -> 0

기존 비트가 1이었다면 1 AND 1 -> 1

=> 무조건 자기 자신이 나온다는 것이 특징!

 

세번째. 0과 OR연산하기

기존 비트가 0이었다면 0 OR 0 -> 0

기존 비트가 1이었다면 1 OR 0 -> 1

=> 무조건 자기 자신이 나온다는 것이 특징!

 

네번째. 0과 AND연산하기

기존 비트가 0이었다면 0 AND 0 -> 0

기존 비트가 1이었다면 1 AND 0 -> 0

=> 무조건 0이 나온다는 것이 특징!

 

위의 네가지를 정리하면 다음과 같다.

연산 종류 결과
X OR 1  1
X AND 1 X
X OR 0 X
X AND 0 0

 

이들을 적절히 조합하여 '응용 논리 연산'을 만들어낼 수 있다.

 

1. 선택적 세트: 특정 비트를 1로 세트할 수 있는 연산

방법: 그대로 놔두고싶은 위치엔 0을 넣고 1로 세팅하고 싶은 곳엔 1을 넣은 데이터를 만들어 OR 연산을 하면 된다.

A = 1001 0010이라고 하자. 

여기에 내가 원하는 위치에 1을 넣고 싶다면? 여기서는 뒤의 네 비트에 1을 넣고 싶다고 해보자. 그러면

B = 0000 1111을 만들어 OR 연산을 해주면 된다.

결과: (1001 0010) OR (0000 1111) => (1001 1111)

 

 

2. 마스크 : 특정 비트를 0으로 리셋할 수 있는 연산 

방법: 리셋하고 싶은 곳엔 0을 넣고 그대로 놔두고 싶은 곳엔 1을 넣은 데이터를 만들어 AND 연산을 하면 된다.

A = 1011 0101이라고 하자.

처음 네 비트를 0으로 만들고 싶다면?

B = 0000 1111을 만들어 AND 연산을 해주면 된다.

결과: (1011 0101) AND (0000 1111) => (0000 0101)

 

3. 삽입 : 특정 비트를 0또는 1로 만드는 연산

앞서 배웠던 선택적 세트와 마스크를 차례대로 시행하면 된다.

A = 1001 0010이라고 하자.

뒤의 네 비트는 무조건 1010이었으면 좋겠다. 어떻게 조작해야 할까?

우선 뒤의 네 비트를 전부 0으로 만들자 -> 마스크 연산이므로 (1111 0000)을 만들어 AND 연산 -> (1001 0000)

그 다음 선택적 세트 연산 -> (0000 1010)을 만들어 OR 연산

결과는? (1001 0000) OR (0000 1010) => 1001 1010

의도한대로 처음 (1001 0010)을 (1001 1010)으로 변경하였다.

 

 

**이 글에서 결국 핵심은 다음을 기억하는 것이다.

OR 1은 무조건 1로 만들기

AND 0은 무조건 0로 만들기

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글