2진수의 논리연산
산술 연산 | 덧셈, 뺼셈, 곱셈, 나눗셈 등의 연산이다. |
논리 연산 | 주어진 명제에 대하여 참(True)과 거짓(False)를 결정하는 연산이다. |
연산 장치 | 컴퓨터에서 산술 연산과 논리 연산을 수행하는 장치이다. |
논리 연산
주어진 명제에 대하여 참(True)과 거짓(False)를 결정하는 연산
기본 논리 연산
● AND 연산
● OR 연산
● NOT 연산
● XOR(Exclusive-OR 연산)
AND연산
2진수의 입력이 모두 1일 때 1을 출력하고 나머지의 경우에는 0을 출력
A*B : 곱하기 연산 사용
OR 연산
2진수의 입력 중 하나라도 1이면 1을 출력하고, 모든 입력이 0일 때 0을 출력
A+B : 더하기 연산 사용
NOT 연산
입력에 반대를 출력
입력이 하나이다. 출력도 하나이다.
A가 0이면 결과는 1이다
A가 1이면 결과는 0이다.
Exclusive-OR(XOR) 연산
2진수의 입력이 모두 동일할 경우에는 0이고, 나머지의 경우에는 1을 출력
응용 논리 연산
● 마스크 연산(AND 연산)
● 선택적-세트 연산(OR 연산)
● 선택적-보수 연산(XOR 연산)
● 삽입 연산 (AND, OR 연산)
● 비교 연산 (XOR 연산)
● ROTATE 연산
● 논리 SHIFT 연산
● 산술 SHIFT 연산
마스크 (Mask) 연산 (AND 연산)
원하는 비트들을 선택적으로 clear(0)
특정 위치의 비트나 문자를 삭제하는 연산
기본 동작
데이터의 특정 비트들을 0으로 바꾸기 위해서, 원하는 특정 비트위치가 0으로 설정된 Mask와 AND 연산을 수행
마스크 연산의 예제
문제 : 데이터 A의 상위 4비트를 0으로 clear하기
연산과정 : 데이터 B를 0000 1111로 하고 AND 연산수행
선택적-세트 연산 (OR 연산)
2진수의 특정 비트를 선택하여 1로 설정
특정 비트 또는 문자를 삽입하거나 결합 시 사용
예제
문제 : 하위 4비트 모두를 1로 설정하기
연산과정 : 데이터 A가 1001 0010일 때, 데이터 B를 0000 1111로 하고 A+B(OR 연산)을 수행
선택적-보수 연산 (XOR 연산)
2진수의 특정 비트를 1의 보수로 변경시키는 연산
● 즉, 지정된 비트가 반전됨
● 원하는 특정 비트위치가 1로 세트된 데이터와 XOR 연산
예제
문제: 데이터 A의 하위 4비트를 반전시킴
연산과정 : 데이터 B를 0000 1111로 하고 데이터 A와 XOR 연산 수행
삽입 (Insert) 연산 (AND, OR 연산)
2진 데이터 내의 특정 위치에 새로운 비트 값들을 삽입하는 연산
● 마스크 연산과 선택적 세트 연산을 순차적 수행
● 삽입할 비트 위치들에 마스크 연산, 새로이 삽입할 비트들과 선택적 세트 연산을 수행
예제
문제 : 데이터 A = 1001 1010의 하위 4비트에 1100을 삽입하기
마스크 연산으로 다 지워주고 OR 연산으로 삽입시킨다.
비교(Compare) 연산(XOR 연산)
두 데이터를 비교하는 연산
● Exclusive-OR 연산으로 구현
● 결과가 모두 0이면 같은 경우임
데이터 A와 B의 내용을 비교하여 만약 대응되는 비트들의 값이
서로 같으면, 데이터 A의 해당 비트를 0으로 설정
서로 다르면, 데이터 A의 해당 비트를 1로 설정
예제
문제 : A = 1110 0001과 B = 0101 1001를 비교
순환 이동 연산 (ROTATE 연산)
순환 이동 (Circular Shift) 연산
최상위 혹은 최하위에 있는 비트가 반대편 끝에 있는 비트 위치로 이동해서 비트가 회전함
산술적 이동 연산 (SHIFT 연산)
이동 과정에서 부호 비트는 유지하고, 수의 크기를 나타내는 비트들만 이동
특징
좌측으로 한 비트씩 이동 시킬 때마다 2로 곱한 것과 같은 결과가 됨
우측으로 한 비트씩 이동 시킬 때마다 2로 나눈 것과 같은 결과가 됨
논리적 이동(Logical Shift) : 논리적 SHIFT 연산
이동 과정에서 부호 비트를 고려하지 않고 왼쪽 또는 오른쪽으로 한 비트씩 이동