3. 보수의 표현
-
1의 보수(1` complement) 표현
-
어떤 수 n과의 합이 1이 되는 수 (각 자리가 합해서 1이 되는 수)
- 예 : 2진수 0011010의 1의 보수 = 11001010
- 10 진수에서는 9의 보수와 유사하다
-
-
2의 보수(2` complement) 표현
-
어떤 수 n과의 합이 2가 되는수
- 예 : 2진수00110101의 2의 보수 = 11001011
- 요령 : 원래의 수에서 처음 1이 나오는 수 밑으로는 0, 1이 나온 수의 자리는 1, 위의 자리들은 1의 보수 처리
- 10진수에서 10의 보수는 9의 보수 + 1
-
-
부호화 - 절대치 표현
-
부호와 데이터의 절댓값을 그대로 표현
최상위 비트 ... 최하위비트 부호 비트 절대치 비트(데이터 비트) -
(예제) 10진수 +53과 -53에 대하여 8bit 부호화-절대치 표현으로 나타내시오. +5310 = 001101012. -5310 = 101101012
-
-
1의 보수 / 2의 보수 표현에 대한 특징
-
공통점
- 음수 표현에만 적용
- 음수에 대한 부호화-절대치 표현에서 부호 비트는 그대로 사용
-
차이점 : 음수에 대한 부호화 - 절대치 표현에서 절대치(데이터 비트)에 대해
- 1의 보수(0은 1로, 1은 0으로)로 바꿈
- 2의 보수(1보수에 1을 더함)로 바꿈
-
(예제) +53과 -53 8bit 1의 보수/2의 보수 표현
(1) +53은 부호화-절대치 표현과 동일 (∵양수) ∴ 00110101 (2) -53은 부호 비트를 제외한 7bit 데이터 비트는 01101012이므로 1의 보수 표현 : 11001010 2의 보수 표현 : 11001011
-
-
데이터의 범위
-
n비트를 사용하는 컴퓨터에서
- 1의 보수 : -(2n-1-1) ~ (2n-1-1) - 사용할 수 있는 비트 개수는 n-1 이며 이므로 절대값들의 표현 범위는 0~2n-1-1이다. (표현할 수 있는 비트 개수가 k일 때 표현할 수 있는 수의 범위 0 ~ 2k-1) 0이 두개라는 특징이 있으며 제일 작은수와 제일 큰수가 대칭된다.
(-0) 1111 (-1) 1110 (-2) 1101 (-3) 1100 (-4) 1011 (-5) 1010 (-6) 1001 (-7) 1000 (0) 0000 (1) 0001 (2) 0010 (3) 0011 (4) 0100 (5) 0101 (6) 0110 (7) 0111 - 2의 보수 : -2n-1 ~ (2n-1-1) - 2의 보수로는 1의 보수보다 절댓값이 하나더 큰 수를 표현할 수가 있다. 따라서 2의 보수로 표현되는 음수는 0부터 시작하지 않고 1부터 시작하여 -2n-1까지 표현할 수 있는 것이다. 이렇게 하면 0도 두 개가 아니고 1의 보수보다 하나 더 많은 범위를 표현할 수가 있다.
(-1) 1111 (-2) 1110 (-3) 1101 (-4) 1100 (-5) 1011 (-6) 1010 (-7) 1001 (-8) 1000 (0) 0000 (1) 0001 (2) 0010 (3) 0011 (4) 0100 (5) 0101 (6) 0110 (7) 0111
-
-
부호화-절대치 표현의 한계
-
연산 결과가 데이터의 범위를 벗어나는 경우를 초과(overflow)라고 하며 다음 2가지 경우에 발생
① 두 개의 양수를 더했을 때 음수가 나오는 경우 : 부호화 비트가 0 -> 1
② 두 개의 음수를 더했을 때 양수가 나오는 경우 : 부호화 비트가 1 -> 0
-
(예) 4bit 부호화-절대치 표현에서
① 410+510 = 01002+01012=10012 = -110≠910
② (-3)+(-4) = 1011+1100=10111 = 7≠-7
-
-
보수 표현을 사용하는 이유
-
부호화 - 절대치 표현의 한계
-
연산의 결과가 부정확 : 초과 발생시
-
예 : 4bit 에서 연산 : 4 + 5, (-3) + (-4)
-
0에 대한 2가지 표현
-
뺄셈을 덧셈으로 바꿔 올바른 값을 도출해내기 위해
(예제) 5 - 3 = 5 + (3에 대한 10의 보수) = 5 + 7 = 2
-
-
-
1의 보수 표현의 한계
-
연산의 정확성 : 양수와 음수를 더했을 때 초과가 발생하여 원래 값보다 1이 작은 수가 나온다.
-
0에 대한 2가지 표현 : 0000(+0), 1111(-0)
-
-
2의 보수 표현에서 이의 2가지 문제 모두 해결
-
연산의 정확성, 0에 대한 유일한 표현
-
-
1의 보수(2의 보수)를 10진수로 변환하는 방법
-
-(2n-1-1)(-2 n-1)+절대치 비트의 10진수 표현
-
1의 보수(2의 보수)를 다시 1의 보수(2의 보수)로 변환한 후 이에 대해 10진수 표현
-
[예제] 4bit 컴퓨터에서 다음을 10진수로 변환
-
1의 보수 1010: ① -(24-1-1)+(1×21)=-5 (제일 작은 수에서 차이를 더하기)
((1000) + (0010) =.1010 )
② 11012=-(1×22+1×20)=-5
-
2의 보수 1011: ① -(24-1)+(1×21+1×20)=-5 (제일 작은 수에서 차이를 더하기)
((1000) + (0011) = 1011)
② 11012=-(1×22+1×20)=-5
-
-
-
4. 보수의 연산
-
문제가 생기지 않는 경우
(예제) 4bit 컴퓨터에서 210-410에 대해 1의 보수와 2의 보수를 이용하여 연산하시오. |210|= 0010, |410|= 0100
-
1의 보수 이용: 0010 + 1101(4에 대한 1의 보수) = 1101 → 1010= -210 = 2 + (-4) = 2 + (9 - 4) - 9
-
2의 보수 이용: 0010 + 1110(4에 대한 2의 보수) = 11102 → 1010 = -210
= 2 + (-4) = 2 + (10 - 4) - 10
-
-
초과가 발생하여 문제가 생기는 경우
(예제) 4bit 컴퓨터에서 410-210에 대해 1의 보수와 2의 보수를 이용하여 연산하시오.
|410|= 0100, |210|= 0010
-
1의 보수 이용: 0100 + 1101 = 10001 10001 + 1 = 01002 = 210
= 4 + (-2) = 4 + (9 - 2) - 10 + 1
-
2의 보수 이용: 0100 + 1110 = 00102=210
= 4 + (-2) = 4 + (10 - 2) - 10
-
왜 이렇게 1의 보수에서는 1을 더해야하는 가? 초과된 자릿수를 뺴주면, 기수보다 1 적은 수만이 남기 때문이다.
-
-
초과가 발생하여 문제가 생기는 경우 2 (예제) 4bit 컴퓨터에서 -210-410에 대해 1의 보수와 2의 보수를 이용하여 연산하시오 |210|= 0010, |410|= 0100
-
1의 보수 이용: 1101 + 1011 = 11000 11000 + 1 = 10012 → 1110 = -610
(-2) + (-4) = (9 - 2) + (9 - 4) - 10 + 1 =
-
2의 보수 이용: 1110 + 1100 = 10102 → 1110 = -610
-
'컴퓨터 기초 > 이산 수학' 카테고리의 다른 글
신흥철 교수의 이산 수학 8강 : 수의 표현 (0) | 2020.10.04 |
---|---|
신흥철 교수의 이산 수학 7강: 집합의 대수 법칙, 집합의 분할 (0) | 2020.10.04 |
신흥철 교수의 이산 수학 5, 6 강: 집합, 집합의 연산 (0) | 2020.10.04 |