[문제해설] 다음 2진수 값을 부분적으로 반전하고자 할 때 사용되는 논리게이트와 마스크 비트 값을 쓰시오.
전자계산기조직응용기사 실기 필답형 기출문제 (컴퓨터구조-마이크로연산) - 2008년3회, 2014년3회
다음 2진수 값을 부분적으로 반전하고자 할 때 사용되는 논리게이트와 마스크 비트 값을 쓰시오.
2진수 : 10110100 결과 : 10111011 |
- 문제 해설 -
데이터를 처리하는 명령어(instruction)는 산술, 논리 연산 및 비트 처리, 시프트 연산으로 분류가 됩니다.
본 문제는 논리 연산에 관한 문제입니다. 대표적인 논리연산 4가지는 다음과 같습니다.
논리연산 | Instruction |
AND | Mask |
OR | Selective Set |
XOR | Compare |
NOT | Complement |
위 표의 왼쪽 열 '논리 연산'은 연산에 사용되는 논리게이트를 의미하고, 오른쪽 열 'Instruction'은 연산의 명칭입니다.
그럼 문제에서 묻고 있는 마스크 비트(Mask bit)는 무엇일까요?
mask라는 단어는 보통 얼굴을 가리는 가면의 의미로 많이 사용되는 단어이지만, 원래의 의미는 고정되어 있는 것을 뜻합니다. 연극 등에서 사람이 쓰는 가면(mask)은 연기자의 표정이 드러나지 않고, 가면을 제작할 때의 의도된 감정을 전달할 수 있게 할 수 있습니다.
우리가 알아야 할 논리회로에서의 mask라는 단어는 고정된 비트 값을 의미합니다. 이 값은 어떤 연산을 할 때 사용되는 고정된 비트 값입니다.
좀 더 명확한 이해를 위해 위의 4가지 논리 연산들을 하나씩 자세히 살펴보겠습니다.
1. AND ; Mask
위는 AND연산의 게이트 심벌, 논리식, 진리표입니다.
AND연산의 진리표(truth table)를 통해 두 비트(x, y)가 같을 때에만 결과가 1이라는 것을 알 수 있습니다.
이러한 성질을 이용해서, y의 값이 1로 고정되면, x의 값은 1일 때 결과는 1, 0일 때 결과는 0입니다. 다르게 표현하면 AND연산은 y값이 1일 때, 무조건 x의 값을 그대로 출력하며, y값이 0일 때는 무조건 0을 출력한다는 의미입니다.
이때 y값이 마스크 비트이며, 마스크 비트를 값을 이용하여, 원하는 위치의 비트를 제외한 모든 비트를 손쉽게 0으로 바꿀 수가 있습니다. 원하는 데로 값을 고정할 수 있다 하여 AND연산을 마스크(mask) 연산이라고 부릅니다.
예를 들면, 4비트의 데이터 중 왼쪽에서 세 번째 비트를 제외한 모든 비트를 0으로 만들고 싶으면 마스크 비트를 '0010'으로 설정하여 다음과 같이 연산합니다.
2. OR ; Selective Set
위는 OR연산의 게이트 심벌, 논리식, 진리표입니다.
OR연산은 진리표에서 알 수 있듯, 두 값(x, y) 모두가 0일 경우에만 결과가 0이고, 나머지의 경우에선 모두 결과가 1입니다. 여기서 y가 1인 경우만 살펴보면, y가 1일 때는, x의 값이 무엇이든, 무조건 값을 1로 만듭니다.
'set'이라는 단어의 원뜻은 '설정하다'입니다. 논리회로에서 'set'은 값을 1로 만드는 것을 의미합니다.
그럼 y값을 마스크 비트로 사용한다면, 선택한(selective) 비트를 무조건 1(set)로 만들 수 있습니다. 그래서 OR연산을 selective set 연산이라고 부릅니다.
selective set 연산의 예로, 마스크 비트가 '0010'일 경우, x값의 왼쪽에서 세 번째 비트는 무조건 1로 만들 수 있습니다.
3. XOR ; Compare
위는 XOR연산의 게이트 심벌, 논리식, 진리표입니다.
XOR연산은 위의 진리표에서 보듯이, x, y의 값이 서로 다를 경우에만 결과가 1입니다. 이처럼 XOR연산은 두 값을 비교하는 기능을 한다 하여 compare연산이라고 부릅니다.
이번에도 y값이 1일 경우만 따져보면, y가 1일 때는 x의 값을 반전시킨다는 것을 알 수 있습니다. 그래서 y값을 마스크 비트로 사용한다면, 원하는 위치의 비트를 반전시킬 수 있다는 것을 알 수 있습니다.
다음 그림의 예처럼, 4비트의 x값에서 오른쪽 2개의 비트만 반전시키려면, 마스크 비트를 '0011'로 정하면 됩니다.
4. NOT ; Complement
NOT은 앞서 본 연산들과는 다르게 단항 연산입니다. 그래서 마스크 비트가 필요치 않으며, 위 진리표에서 보듯, 그냥 값을 반전시키기에 NOT 연산은 Complement 연산이라고 부릅니다.
이제 Instruction 명칭에 대한 설명을 마치고 본문제를 풀어보겠습니다.
문제에서 제시한 부분적으로 반전시키는 기능을 하는 연산은 Compare 연산입니다. 반전이라고 해서 Complement(NOT) 연산을 떠올릴 수도 있지만, Compare 연산은 마스크 비트가 필요치 않으며, 무조건 반전시키는 연산이기에, 부분적인 반전을 할 수가 없습니다.
그럼 Compare(XOR) 연산을 사용한다는 것을 알았으니, 마스크 비트를 유추해야 합니다.
위와 같이 연산 전, 후의 값을 비교해보면, 8비트 데이터의 오른쪽 4개의 비트가 반전되는 것을 알 수 있습니다. 그럼 필요한 마스크 비트는 '00001111'라는 것을 쉽게 유추할 수 있습니다.
그럼 이 문제의 정답은 Compare 연산을 위해 XOR 게이트를 사용하며, 마스크 비트는 00001111이라는 것을 쉽게 알 수 있습니다.
https://youtube.com/playlist?list=PLboXycXmAIDt4ObBRPVj29BuD2d27oRnO
전자계산기조직응용기사 실기 필답형
국가기술자격증 전자계산기조직응용기사 실기 필답형 강의 교재구입 : https://www.bookk.co.kr/book/view/135135
www.youtube.com