1-6. 부호있는 2진수 (signed binary number)
앞서 우리는 사람이 하는 뺄셈이 아닌 컴퓨터가 뺄셈을 효과적으로 하는 방법을 '보수 (complements)'를 통해서 보았다.
하지만 이 모든 과정은 부호가 없다는 전제 하에 이루어졌고, 그냥 음수가 발생한다면 (end carry가 없다면) 그 뜻을 이해하고 있으므로 앞에 (-)부호를 넣어줬을 뿐이다.
이것은 우리가 익숙한 과정이기 때문에 아무런 생각 없이 편하게 진행하지만, 컴퓨터에서는 2진법 내에서 표현할 수 있어야 컴퓨터를 통해서 음수 양수를 표현하고 계산할 수 있을 것이다.
그래서 우리는 2진법 내에서 음수와 양수, 즉 부호를 가진 표현 방법을 약속했다.
이러한 과정을 약속했기 때문에, 정확히 판단하기 위해서
부호있는 2진수 (signed binary number)를 논할 때 반드시 수를 몇 bit 으로 표시할 것인지 명시해야 한다.
말로 아무리 저렇게 하더라도. 결국 예시로 보는것이 가장 직관적이다. 예를들어 -9를 8bit으로 어떻게 표현할까?
물론 10진수 표기로 된 음수이므로. 2진수로 먼저 바꾸어 주어야 한다.
시작은 +9에서부터 시작한다. (양수부터 시작) +9를 2진수로 변환하면 1001이다. 이 때 우리는 8bit을 사용하므로
00001001
여기서 우리는 첫번째 방법을 사용한다면. negative는 맨 왼쪽 자리에 1을 표기하므로
→10001001 으로 표현한다.
두번째 방법에서는 1의 보수를 취해주면 된다. 이 때 2진수의 1의 보수는 감소된 기수 보수를 구하는 것이므로.
→11110110 (양수 기준에서 구함) 이다.
세번째 방법으로는 2의 보수이므로. 감소된 기수 보수에 +1을 해준 것으로 구해낼 수 있다.
→11110111
이 때 파란색으로 쓰여진 맨 왼쪽 비트는 부호를 나타낸다는 의미이다.
위의 table은 간단한 decimal 정수들을 위에서 정해진 규칙에 따라서 구해놓은 것이다.
이 중에서도 signed-2's complement. 즉 2의 보수를 사용하는 방식이 가장 많이 쓰인다.
(양수는 2신법의 변환형태. 음수만 경우에 따라 보수를 사용한 것)
우리는 이제 2진법으로 양수, 음수를 표현하는 방법을 알았고 이를 활용해서 곧바로 산술에 적용할 수 있다.
이 때 2의 보수 형태로 표현된 음수를 포함하는 부호있는 두 2진수의 덧셈은 부호 비트를 포함한 두 수를 더함으로써 얻어진다. 부호 비트 자리에서 발생하는 올림은 버린다. (음수는 2의 보수형태로 표현되어 있는 그대로 덧셈에 이용하고 덧셈에서 나오는 end carry는 제거한다.)
위의 사진에서도 볼 수 있듯이. 양수의 덧셈은 우리가 알고있는 2진법 덧셈과 같고. 음수가 등장할 경우 이 음수를 8bit으로 이루어진 자릿수의 2의보수를 취해 덧셈에 활용한다. 그 과정에서 8bit을 넘어가는 부호 bit 자리의 올림은 제거한다.
이 과정의 결과값에서. 맨 앞의 bit이 1인 경우 다시 그 결과값의 2의 보수를 취해주면 양수의 자신의 값이 나온다.
뺼셈의 과정은 더욱 간단하다. (사실 보수를 이용하면 뺄셈이 덧셈이 되기 때문)
기본적인 원리를 설명하자면 다음과 같다.
부호비트를 포함한 감수에 대해 2의 보수를 취하고, 그것을 부호비트를 포함한 피감수에 더한다. 부호 비트 자리에서 발생하는 올림 (end carry)는 버린다.
부호 보수 시스템에서 2진수는 부호없는 수에서와 동일하게 기본적인 덧셈과 뺄셈 규칙에 따라 더하고 뺀다는 것을 알았다. 따라서 컴퓨터는 두 형식의 산술 연산에 대해 단지 하나의 공통된 하드웨어 회로를 필요로 한다. 이러한 특징 떄문에 부호 보수 시스템은 컴퓨터 시스템의 거의 모든 산술 연산 장치에서 사용된다.
'디지털공학 > Chap 1.' 카테고리의 다른 글
Chap 1. 디지털 시스템과 2진수 (3) . Digital Systems and Binary Numbers (0) | 2022.01.07 |
---|---|
Chap 1. 디지털 시스템과 2진수 (2) . Digital Systems and Binary Numbers (0) | 2022.01.06 |
Chap 1. 디지털 시스템과 2진수 (1) . Digital Systems and Binary Numbers (0) | 2022.01.06 |