![[디지털 공학(5)] 보수 및 부호 표시](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPwk3c%2FbtsHbRgONPE%2FS0bHezfAQPKb36m7RexGkk%2Fimg.png)
안녕하세요.
이번 시간에서 수의 체계중 보수에 대해 사용하는 이유부터 연산하는 과정을 작성하였습니다.
※1. 보수 정의
➀ 뺄셈시 덧셈으로 뺄셈을 하기 위해 사용한다.
➁ 곱셈은 덧셈의 연속으로 계산할 수 있다.
➂ 나눗셈은 뺄셈의 연속으로 계산할 수 있다.
➃ 컴퓨터는 가산기(덧셈기) 한 가지 만으로 4칙 연산이 가능하다.
※2. 1의 보수
- 0을 1로 1을 0으로 변환 시키는 것이다.
ex) 101010 -> 010101
- 디지털회로에서 반전기(Not Gate)를 이용하여 구할 수 있다.
※3. 2의 보수
➀ 방법 1 : 1의 보수에 1을 더하여 구한다.
ex) 100100 -> 011011 -> 011100
➁ 방법 2 : 우측부터 시작하여 첫 번째 1일 나올 때 까지는 불변하고, 이후의 비트들은 반전(0을 1로 1을 0으로 변환)시킨다.
ex) 1010010 -> xxxxx10 -> 0101110
+) 2의 보수는 음수를 표현하기 위해 사용한다.
컴퓨터에서는 보수를 사용하여 뺄셈 연산을 수행한다. 즉, 뺄셈 연산은 피감수에 보수를 취해 감수를 더하면 된다.
※4. 부호 표시 수
- 부호와 크기 정보를 모두 구성하여 해당 데이터가 양수인지 음수인지 그리고 크기 값은 얼마인지 모두 담고 있다.
- 부호 비트 : sign bit라고 하고 컴퓨터에서 다루어지는 2진수에서 그 음양을 구별하기 위해 사용하는 비트이다.(양수의 경우 : 0, 음수의 경우 : 1)
ex) 54 => 00110110(true form) / -54 => 10110110(true form)
※5. 부호 표시 방법
➀ 부호 - 크기 형식
(1) 일반적으로 가장 좌측 비트가 부호비트, 나머지 비트들은 크기 비트로 표현한다.
(2) 크기 비트들은 양수나 음수에 관계없이 크기만을 표시한다.
➁ 1의 보수 형식
(1) 양수는 부호 - 크기 형식과 같은 방법으로 표현한다.
(2) 음수는 대응되는 양수의 1의 보수로 취한다.
➂ 2의 보수 형식
(1) 양수는 부호 - 크기 형식과 같은 방법으로 표현한다.
(2) 음수는 대응되는 양수의 2의 보수로 취한다.
ex) 10진수 -35를 8비트로 표현
➀ 부호 - 크기 형식 : 10100011
➁ 1의 보수 형식 : 11011100
➂ 2의 보수 형식 : 11011101
+) 부호표시수의 2진수를 쉽게 읽는 방법
: MSB에는 음수의 가중치(8비트의 경우 -128)를 부여하고 나머지는 원래의 가중치를 곱하여 모두 더한다.
ex) 10010100
+) 2진수의 코드가 1이 많아서 10진수로 변환할 때 계산이 많아 번거로운 경우 : 2의 보수로 변환 후 나온 결과 값에 부호만 바꾸어 10진수를 계산할 수 있다.
ex) 11010111의 이진수를 10진수로 바꾸어라
11010111의 경우 1이 많아서 과정이 길어지므로 2의 보수로 변환 하여 1의 개수가 적게 만든 이후 부호를 바꿈
<풀이> 11010111 => 00101001 => 32+8+1=41 (부호반대) => -41
※6. 부호 표시 수의 10진수 변환
➀ 부호 - 크기 : 크기 비트 중 0을 제외한 1만을 가중치를 모두 더한 값에 부호 비트 보고 부호를 붙여준다. (1:음수 0:양수)
➁ 2의 보수 :
방법 1) : 음수의 경우 부호비트의 가중치를 음으로 하고 나머지 크기 비트는 양으로 하여 모든 가중치를 더한다.
ex) 10001000 = -(2^7)+2^3 = -128 + 8 = -120
방법 2) : 구하려는 값을 2의 보수로 취해준 후 그 값의 2진 크기를 구한다. 단 부호는 반대이다.(2진수에 1이 많을 경우 사용 추천)
ex) 11101110 => 00010010 = 2^4+2^1 (부호반대) => -18
➂ 1의 보수 :
방법 1) : 음수의 경우 부호 비트의 가중치를 음으로 하고 나머지 크기 비트는 양으로 하여 모든 가중치를 더하고 결과에 1을 더한다.
ex)10001000 = -(2^7)+2^3+1 = -128 + 8 + 1 =-119
방법 2) : 구하려는 값을 1의 보수로 취해준 후 그 값의 2진 크기를 구한다. 단 부호는 반대이다.(2진수에 1이 많을 경우 사용 추천)
ex) 11101110 => 00010001 = 2^4 + 2^0 (부호반대) = -17
※ 7. 부호 표시 수의 표현 범위
- n비트로 표현할 수 있는 수의 조합 : 2^n
- 2의 보수의 경우, n비트로 표현할 수 있는 값의 범위 : 2^(n-1)-1~-(2^(n-1))
+) 컴퓨터에서는 부호표시 수를 표현하기 위해 2의 보수 형식이 가장 많이 사용된다.
※8. 컴퓨터시스템의 부호 표시 수 산술연산(2의 보수를 이용한다.)
➀ 덧셈
- 덧셈에 포함된 두 수 : 가수, 피가수
- 결과 : 합, 캐리 (두 수를 더하고, 최종 캐리가 발생하면 버린다.)
<덧셈의 4가지 유형>
· 두 수 모두 양수인 경우 => 합은 양수
· 음수보다 크기가 더 큰 양수인 경우 => 합은 양수
· 양수보다 크기가 더 큰 음수인 경우 => 합은 음수
· 두 수가 모두 음수인 경우 => 합은 음수
=> 11111101 => 00000011 <-> 2의 보수화 => 2+1 (부호반대) => -3
=> 11110111 => 00001001 <-> 2의 보수화 => 8 + 1 (부호반대) => -9

'University curriculum > [Course] Digital Engineering' 카테고리의 다른 글
[디지털 공학(7)] 논리 게이트의 이해 (1) | 2024.05.08 |
---|---|
[디지털 공학(6)] 디지털 코드(BCD, Gray, ASCII, Parity) (0) | 2024.05.08 |
[디지털 공학(4)] 수 체계(2진수, 8진수, 10진수, 16진수)와 진수 변환 (0) | 2024.05.08 |
[디지털 공학(1)] 디지털 개념의 이해 (0) | 2024.05.07 |
[디지털 공학(2)] 2진 숫자와 논리 레벨 (0) | 2024.05.07 |
전자공학 블로그에 오신 것을 환영합니다! 최신 기술 동향, 회로 설계, 반도체 및 전자 부품에 대한 유용한 정보와 실습 팁을 제공합니다.