본문 바로가기
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로 만들기

📘 비전공자 개발자 취업 성공기 시리즈

개발자가 되고 싶었던 한 비전공자의 1년 4개월 이야기
막막했던 시작부터 좌절, 그리고 합격까지의 여정을 기록했습니다

 

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

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

kmong.com

댓글