파다 평범일상

디지털 회로, 컴퓨터가 사칙연산을 하는 방법 본문

컴퓨터 IT/얕은 컴퓨터 지식과 프로그래밍

디지털 회로, 컴퓨터가 사칙연산을 하는 방법

파다 평범일상 2023. 6. 24. 21:49
반응형
디지털 회로 게이트

 

  • 입력값 (Input)은 A와 B인 전기신호가 있다.
  • "AND 연산"은 입력값이 모두 1일때 1을 반환한다.
  • "OR 연산"은 입력값중에 1있을때 1을 반환한다.
  • "XOR 연산"은 입력값이 서로 다를때 1을 반환한다.

 

CPU는 산수연산을 하는 전자 계산기이다

 

7408 ic 칩

 

  • A와 B는 하나의 전기신호이다.
  • 전기신호를 조합하여 전자 계산기를 만들 수 있다.
  • 집에서 CPU를 만들 수 있다.
  • 구슬로도 계산기를 만들 수 있다.
컴퓨터의 정수 뺄셈

 

  • 뺄셈에 대한 이야기가 나오면 "보수"를 생각해야 한다.
    1. 6에 4를 더하면 10이다.
    2. 즉, 4는 6에 대한 보수이다.
    3. 보수의 덧셈은 자동으로 뺄셈이 이루어진다.
  • 2진수에서도 "보수"를 생각하면 된다.
    1. 2진수에서 0은 1로, 1은 0으로 뒤집으면 1의 보수가 된다.
    2. 1의 보수에서 1을 더하면 2의 보수이다.
    3. 어떤 숫자에 2의 보수를 더하면 자동으로 2진수 뺄셈이 된다.
    4. 2진수 13 - 2진수 6의 계산 예제를 보자.
      • 2진수 13은 1101 이다.
      • 2진수 6은 0110 이다.
      • 0110의 1의 보수는 0과 1만 변경하면 되므로 1001이 된다.
      • 1001에 더하기 1을 한다면, 1010이 된다.
      • 13의 이진수 1101에 1010을 더하면 10111이 되지만, 자리올림된 수는 버린다.
      • 자리올림된 숫자를 버리고 4 Bit만 봤을때 0111이므로 7이된다.

 

컴퓨터의 정수 곱셈

 

  • 곱셈은 기본적으로 덧셈을 여러번 수행하면 된다.
  • 여러번 덧셈보다 효율적으로 곱셈 계산하는 방법이 있으며, 그것은 "Shfit" 연산이다.
  • 밀어내는 연산을 "Shift"라고 한다.
  • 밀어낸 자리에 0을 채우는것을 "Padding" 이라고 한다.
    1. 왼쪽으로 밀어냈기에 오른쪽에 빈자리가 생긴다.
    2. 빈자리에는 0을 채운다.
  • 곱셈의 "Shfit" 연산은 Bit가 나열되어 있을때 왼쪽으로 Bit를 밀어내는 것이다.
    1. 10진수 5에 2를 곱하는 과정이다.
    2. 10진수 5를 2진수로 나타내면 0101이다.
    3. 0101을 왼쪽으로 한번 "Shfit"를 하게되면, 오른쪽에서 "Padding"이 발생하여 01010이 된다.
    4. 자리올림된 왼쪽 맨 마지막을 버리면 1010이 남게된다.
    5. 2진수 1010은 10진수 10이 된다.

 

컴퓨터의 정수 나눗셈

 

  • 나눗셈은 기본적으로 뺼셈을 여러번 수행하면 된다.
    1. "피제수" / "제수"로 표현되며 과정은 뺴기로 진행된다.
    2. "피제수"에서 "제수를" 뺀다.
    3. 뺀 결과가 "제수"보다 크거나 같으면 계속 반복한다.
    4. 뺸 결과가 "제수"보다 작으면 그만한다.
    5. 몇번이나 반복했는지가 나눗셈의 결과이다.
    6. 만약 "제수"가 0이라면, 위의 과정은 무한정 반복하게 되므로 절대 하지 말아야 한다.
      - 무한정 반복하다가 터져버린 CPU가 있다.
  • 동일하게 밀어내는 연산을 "Shift" 라고 한다.
  • 동일하게 밀어낸 자리에 0을 채우는것을 "Padding" 이라고 한다.
    1. 오른쪽으로 밀어냈기에 왼쪽에 빈자리가 생긴다.
    2. 빈자리에는 0을 채운다.
  • 나눗셈의 "Shfit" 연산은 Bit가 나열되어 있을때 오른쪽으로 Bit를 밀어내는 것이다.
    1. 10진수 6을 2로 나누는 과정이다.
    2. 10진수 6을 2진수로 나타내면 0110이다.
    3. 0110을 오른쪽으로 한번 "Shift"를 하게되면, 왼쪽에서 "Padding"이 발생하여 00110이 된다.
    4. 자리올림된 오른쪽 맨 마지막을 버리면 0011이 된다,
    5. 2진수 0011은 10진수 3이 된다.
Comments