이 글은 전공과목인 디지털 공학을 복습하며 작성한 글이다.
signed number vs unsigned number
1. Unsigned number vs Signed number
unsigned number : 음수가 아닌 수 , 즉 양수와 영을 말한다.
signed number : 양수, 음수, 영이 포함된다.
unsigned number를 사용하면 양수만을 사용할 수 있기 때문에 시간과 같은 양의 수 밖에 없는 자료를 한정된 메모리에서 더 많이 표현할 수 있다.
이 글에서는 unsigned보다는 signed를 알아볼 것이다.
2. Signed number
signed number를 표기하는 3가지 방법이 있다.
signed-magnitude representation
(부호크기방식)
signed-1's-complement representation
(부호화 1의 보수)
signed-2's-complement representation
(부호화 2의 보수)
셋을 따로따로 이해하는 것 보다 비교하며 이해하는 것이 훨씬 더 잘 이해된다.
ex) -9를 세가지 방법으로 표현해보자
양수는 한개의 표현밖에 없지만 음수는 3가지 표현이 가능하다.
1) 부호크기방식
부호 크기방식은 가장 왼쪽비트를 부호비트로 사용하여 양수면 0, 음수면 1으로 나타내는 것이다.
혼란을 야기할 수 있는 표기법으로 생각할 수도 있겠지만 숫자를 나타내는 형식이 있기 때문에 혼란스럽지는 않다고 한다.
2) 부호화 1의 보수
음수를 1의 보수를 사용해 나타내는 것이다.
3) 부호화 2의 보수
음수를 2의 보수를 사용해 나타내는 것이다.
컴퓨터는 앞자리 숫자를 보고 음수인지 양수인지 확인한다.
밑의 두가지 방법은 첫번째 방법보다 연산에 용이하기 때문에 컴퓨터는 밑의 두가지방법을 사용한다.
하지만 부호화 1의 보수를 사용할 경우0이 두개인 문제가 생기기때문에(밑에서 설명한다.) 현재는 부호화 2의보수를 사용한다.
표를 보면 1의 보수와 2의 보수의 차이를 알 수 있다. 가장 큰 차이점은 -0의 존재 유무이다. +0을 2의보수 취해도 +0이다. 따라서 현재는 음수는 2의 보수를 취해 연산한다.
산술 덧셈-연산 보충(Arithmetic Addition)
이 글에서는 가장 많이 사용되는 2의보수를 사용한 산술덧셈을 소개할 것이다.
검은 박스는 전 포스팅에서 다루었다.
빨간 박스에서 음수는 모두 2의 보수를 취해주었다. 그후 덧셈해서 나오는 carry는 버리면 계산 끝이다.
앞의 내용과 함께 종합하면 2의 보수를 이용한 진수의 덧셈과 뺄셈은 다음과 같이 요약할 수 있다.
1) 계산하기 전에 자리수를 충분히 두어라(무엇을 추가하는 지는 상관없다.)
2) 음수는 2의 보수를 취해서 더하라
3) carry가 나온다면 버리고 가장 왼쪽 숫자가 0이면 양수, 1이면 음수이다.
4) 음수일 때 2의 보수를 취하고 -를 붙이는 것을 잊으면 안된다.
'전공 수업 CS > Digital Engineering' 카테고리의 다른 글
[디지털공학] 부울대수(불대수)란? | Boolean algebra | 쌍대 , 공리, 공준 | 부울 대수의 주요법칙 (0) | 2023.03.26 |
---|---|
[디지털 공학] BCD 코드 | Gray 코드 | 아스키코드 | 여러가지 바이너리 코드 (0) | 2023.03.26 |
[디지털 공학] 보수 | 2진수의 산술 연산 | 2진수의 덧셈과 뺄셈 방법 (0) | 2023.03.26 |
[디지털 공학] 수의 표현 | 진수의 변환 (0) | 2023.03.26 |
[디지털 공학] 디지털과 아날로그 | digit, bit, byte (0) | 2023.03.26 |