2진수의 연산
- 2진 정수의 덧셈 연산
1. 오버플로우가 발생하지 않는 덧셈 연산
양수와 양수의 덧셈에선 최상위 비트에서 자리올림이 발생하지 않아 계산결과에서 오류가 발생하지 않음
최상위 비트에서 자리올림이 발생하지 않는 음수와 양수의 덧셈에서도 마찬가지이다
최상위 비트에서 자리 올림이 발생하는 음수와 양수의 덧셈에서는
덧셈 결과로 발생하는 최상위 비트에서 자리 올림 수는 버린다.
ex)
음수와 음수의 덧셈에서 필연적으로 최상위 비트에서 자리올림이 발생하고 자리 올림 수를 버리면 된다.
2. 오버플로우가 발생하는 덧셈 연산
덧셈 결과가 표현할 수 있는 범위를 초과하여 결과값이 틀리게 되는 현상을 오버플로우 상태라고 한다.
양수와 양수의 덧셈에서는 부호 비트가 변경되고 잘못된 결과가 발생하고
음수와 음수의 덧셈에서는 자리올림이 발생하고 부호비트가 변경된다 (XOR)
- 2진 정수의 뺼셈 연산
A-B에서
피감수 : 빼지는수 A, 감수 : 빼는 수 B
1. 최상위 비트에서 자리 올림수가 발생하지 않는 뺄셈
10진수에서는 감수를 음수화하고 그 다음 뺄셈을 뎃셈으로 고쳐서 계산을 한다.
2. 최상위 비트에서 자리 올림수가 발생하는 뺄셈
자리 올림 수는 버리고 나머지를 취하면 올바른 값을 얻을 수 있다.
뺄셈 오버플로우 : 뺄셈 결과가 그 범위를 초과하여 틀리게 되는 상태
이 경우 계산 결과가 잘못된 것으로 나온다.
- 2진 정수의 곱셈 연산
A X B = C
곱하는 수 B를 승수라고 하고 곱하여 지는 수 A를 피승수라고 한다
부호가 없는 2진수의 곱셈에서 승수의 각 숫자에 대해 부분 합을 계산하여 승수의 한 비트가 0이면 부분 합도 0이 되고 1이면 부분 합은 피승수와 동일하게 된다.
최종 결과값은 부분 합을 한 자릿수씩 왼쪽으로 이동하고 더하야 구한다.
부호가 없는 2진수의 곱셈에서 음수를 양수로 변환하고 부호가 없는 곱셈을 수행한 후에
승수와 피승수의 부호가 다르다면 결과값에 2의 보수를 취하여 부호를 변경한다.
- 2진 정수의 나눗셈 연산
D / V = Q...R
나누어지는 수 D를 피제수, 나누는 수 V를 제수라고 하며 나눗셈의 결과로 Q는 몫, R은 나머지이다
부호가 표현된 나눗셈에서는 2의 보수를 통해 모두 양수로 고친 다음 나눗셈을 수행한다
- 부동소수점 수의 산술
부동소수점 수의 산술은 가수와 지수의 연산을 분리해서 수행한다.
1. 덧셈과 뺄셈
지수들이 동일한 값을 갖도록 일치시키고 덧셈 또는 뺄셈을 수행한 후에 결과를 정규화한다.
2. 곱셈
가수끼리는 곱셈 연산을 수행하고 지수끼리는 덧셈을 수행한다
후에 결과를 정규화한다.
3. 나눗셈
가수끼리는 나눗셈 연산을 수행하고 지수끼리는 뺄셈을 수행한다.
후에 결과를 정규화한다.
- 부동소수점 수의 연산 과정에서 발생하는 문제
1. 지수 오버플로우
양의 지수값이 최대 지수값을 초과하여 발생하는 오류
+∞ 또는 - ∞로 나타낸다.
2. 지수 언더플로우
음의 지수값이 최대 지수값을 초과하여 발생하는 오류
수가 너무 작아서 표현될 수 없음을 의미하므로 0으로 표시한다
- 논리 연산
1. AND 연산
2진수의 모든 입력이 1일때 1을 출력하고 나머지 경우에 0 출력
2. OR 연산
2진수의 입력 중 하나이상 1이면 1을 출력하고 나머지 경우에 0 출력
3. Exclusive-OR (XOR) 연산
2진수의 입력이 동일한 경우는 0, 나머지 경우는 1 출력
4. NOT 연산
입력의 반대를 출력
- 컴퓨터 응용 논리 연산
1. 선택적-세트연산
2진수의 특정 비트를 선택하여서 1로 세트시키는 연산
ex) 데이터 A가 1001 0010 일 때, 하위 4비트를 모두 1로 세트하려고 하면 데이터 B (0000 1111)과 OR 연산을 수행하면 원하는 결과를 얻을 수 있다.
2. 선택적-보수연산
2진수의 특정 비트를 1의 보수로 변경시키는 연산
데이터 A의 특정 비트를 1의 보수로 나타내기 위해서 원하는 특정 비트 위치가 1로 세트된 데이터 B와 XOR 연산을 수행
3. MASK 연산
원하는 비트를 선택적으로 clear(0)하는데 사용하는 연산
데이터 A를 원하는 특정 비트 위치가 0으로 세트된 데이터 B와 AND 연산을 수행
4. 삽입 연산
삽입할 비트 위치들에 마스크 연산을 한 후 새로이 삽입할 비트들과 OR 연산을 수행
ex)
5. 비교 연산
두 데이터를 비교하는 연산으로 Exclusive-OR연산에 의해서 구현
6. 순환 이동
최상위 혹은 최하위의 비트가 반대편 끝에 있는 비트튀치로 이동해서 비트가 회전한다
순환 좌측 이동과 순환 우측 이동이 있다
7. 산술적 이동
이동 과정에서 부호 비트는 유지하고 수의 크기를 나타내는 비트만 이동한다
문자 데이터의 표현