학점은행제/디지털공학개론

[디지털공학개론] 2진수 연산

단비_danbee 2021. 1. 20. 13:51

 

 

10진수를 8진수로 바꿀때

우선 10진수를 2진수로 바꾼 후 8진수로 바꾸는것이 쉽다

 

음의 정수 표현

최상위 비트 (MSB) 를 부호 비트로 사용

  • 양수(+) : 0
  • 음수(-) : 1

 

2진수 음수를 표시하는 방법

  • 부호와 절대치 (sign-magnitude)
  • 1의 보수(1's complement)
  • 2의 보수(2's complement)

 

2진수 덧셈

 1011
+1011
------
10101
  • 2진수에서는 덧셈결과가 2가 되면 자리올림이 발생된다
  • 마찬가지로 8진수는 덧셈결과가 8이 되면 자리올림이 발생된다
  • 자리올림을 영어로는 carry 라고 한다. 따라서 캐리가 발생했다 라고도 함.
  • CPU를 만들때 필요한 기술

문제) 다음 10진수 값을 2진수 값으로 변환하라

풀이)

 

 

CPU 안의 구조

  • 더하기 회로 + 왼쪽으로 쉬프트시키는 회로 = 곱하기회로
  • 더하기 회로 + 오른쪽으로 쉬프트시키는 회로 = 나누기회로
  • 따라서 더하기 회로만 있어도 CPU를 만들 수 있다

 

1의 보수를 이용한 2진수 뺄셈

  • 작은 수에 1이 보수를 취한다
  • 큰 수에 1의 보수를 합한다
  • 이 때 발생하는 최종 자리올림을 결과의 최하위 비트에 더해준다

 

 

 

 

 

 

2의 보수를 이용한 2진수 뺄셈

  • 2의 보수를 이용해서 2진수 뺄셈을 하려면 우선 2의 보수를 구하는 방법부터 알아야함
  • 2의 보수를 구하는 방법은 아주 간단함
  • 우선 2진수에 대해 1의 보수를 취해줌 (1은 0으로, 0은 1로)
  • 가장 오른쪽 최하위 비트에 1만 더해주면 끝
  • 1의 보수에서는 최하위 비트에 1을 더해줬는데 2의 보수에서는 그렇지 않다는 점이 다름