- 2. 수의 체계 - 2진수에 대한 모든 것 목차
디지털 논리 회로의 이해 - 오창환 , 이 책을 통해 공부한 내용에 대한 기록
2진수의 모든 것
LSB, MSB의 개념에 대해 알아보도록 하자.
LSB : Least Significant Bit , 최 하위 비트
MSB : Most Significant Bit , 최 상위 비트
을 의미하며, 10진수를 2진수로 변환 시켰을 때의 앞자리 , 끝자리 라고 이해하면 보다 쉽게 와닿는다.
2진수, 컴퓨터의 음수 표현
컴퓨터에서는 2진수의 +,- 표현 역시 0과 1로 한다.
여기서 부호비트는 0 : + (양수) 를 의미하고, 1이 : - (음수) 를 의미한다.
또한 이러한 부호 비트는 최상위비트 ( 가장 왼쪽에 위치한 비트 , MSB)에 나타낸다.
이를 이용하여 양수, 음수를 표현 하는 방법에는 3가지가 있다.
1. 부호화-크기 표현, signed- magnitude representation
부호화 크기 표현에서는, 가장 왼쪽의 비트가 부호 비트를 의미하고, 나머지 비트가 수의 크기를 의미한다.
즉, 부호 + 수 의 조합이라고 생각하면 된다.
만약 +123을 표현하고 싶다면, 01111011 이되고, -123을 표현하고 싶다면, 11111011으로 표현할 수 있다.
다만 이 경우에서는 부호 연산 비트와 크기 비트를 따로 처리해야하기 때문에 이를 계산하는 회로의 복잡도가 증가하게 된다는 단점이 존재한다.
2. 보수 표현
단점이 존재하는 부호화-크기 표현을 보완하기 위해, 보수 표현 방법이 생겼다.
보수 표현에는 두가지 보수가 존재한다.
r, r-1 의 보수이다.
즉, 10의 보수에는 10과 9의 보수 2가지가 존재한다는 것이다.
2-1. r의 보수
r의 보수란 다음과 같다.
정수부가 n 개의 숫자로 되어있으며, 기수(base)가 r인 수 N 이 있을 경우, 그 보수는 다음과 같다.
N에 대한 r 의 보수 : r의 n 제곱 - N (N이 0이 아닐 때) / 0 (N이 0일때)
즉, 만약 10진수 12.57에 대한 보수를 구해보자면,
정수부 = 12 => 2개의 숫자로 되어있으므로, n=2 이고,
기수 10 ( 10의 보수를 기준으로 구해보면) 이므로 r= 10 이다. 또한 수 N 은 그대로 12.57 을 의미한다.
즉 10의 2제곱 - N = 100 - 12.57 = 87.43 라는 사실을 우리는 쉽게 알 수 있다.
다르게 생각해보면, 12.57에 어떤 숫자르 더해야 100이 되는가 에 대한 답이라고 생각하면 좀 더 쉽다.
2-2. r-1의 보수
r-1의 보수는 r의 보수에 비해 한자리만 차이난다.
앞과 같이 12.57의 수를 예시로 들어 보자.
r-1의 보수는 정수부는 n개의 숫자로 되어있고, 소수부는 m의 숫자로 구성 되어있는 수 N 을 의미한다.
그럼 여기서 정수부는 12 이므로, 2개의 숫자로 되어있고, (n=2) , 소수부는 57 이므로, 2개의 숫자로 구성된 (m=2) 수 12.57 ( N =12.57 ) 이란 사실을 우리는 쉽게 알 수 있다.
N에 대한 r-1의 보수 = r의 n 제곱 - r의 (-m)제곱 -N 이다.
10 의 보수 (r=10) 에서 우리는 r-1의 보수를 구하는 것이기 때문에 9의 보수를 구하는 것이라고 보면 된다.
즉 9의 보수는, 10의 2제곱 - 10의 -3제곱 - 12.57 = 100 - 0.001 -12.57 = 99.999-12.57 = 87.43 이라는 사실을 확인할 수 있다.
3. 2진수의 1의 보수 , 2의 보수
2진수의 1의 보수는 쉽게 구할 수 있다.
바로 0 과 1을 서로 바꾸는 방법
즉 1100의 보수를 구하면 0011 이 된다. ( 1의 보수) 여기서 결과값에 1을 더하는 것이 바로 2의 보수이다. 이때 만약 MSB로 부터 올려야 하는 케이스가 발생되면 과감히 버린다.
즉, 6을 예시로, 0000110 의 보수를 구해보자. 1의 보수는 1111001이 된다. 2의 보수는 1111010 이 됨을 우리는 쉽게 알 수 있을 것이다.
4. 보수의 감산
: 추가 공부 예정