Post

컴퓨터의 연산

개요

컴퓨터라는 것의 본질은 무엇일까요? 먼저 컴퓨터의 어원에 대해 알아보겠다. Compute는 계산하다 라는 의미를 가지고 있다. 컴퓨터의 본질은 계산 즉 덧셈, 뺄셈, 곱셈, 나눗셈을 빠르게 처리하기 위한 용도로 만들어 졌다. 관련하여 유명한 영화도 있다. 오늘은 컴퓨터가 어떻게 연산을 하는지에 대해 알아 보자.

진법 변환

2진수16진수10진수
000000
000111
001022
001133
010044
010155
011066
011177
100088
10019 
1010A 
1011B 
1100C 
1101D 
1110E 
1111F 

컴퓨터의 연산

덧셈

덧셈은 컴퓨터연산의 근본 이다. 뺄셈, 곱셈, 나눗셈 모두 덧셈 연산을 기반으로 동작 합니다. 덧셈은 2진수 덧셈을 수행하면 된다.

2진수10진수
0001 + 0101 = 01101 + 5

뺄셈

컴퓨터의 뺄셈을 알기 위해서는 먼저 보수라는 개념을 알아야 한다.

보수

  • 보수란 더해서 그 숫자가 되는 수 이다.
  • 뺄셈이란 보수를 덧셈 하는 것이다.
    • 10진수 체계에선 10의 보수를 활용하여 빼기를 구현할 수 있다.
      1. 예시) 13 - 6
        • 13에다 6에대한 10의 보수를 4를 더한다. (6에다 얼마를 더하면 10이 되지 => 4)
        • 13 에다 4를 더하고, 10의 자리는 버린다.(절사)
        • 13 + 4 = 17
        • 10의 자리는 버린다(절사). 결과는 7
      2. 예시) 16 - 7
        • 16에다 7에대한 10의 보수를 3을 더한다. (7에다 얼마를 더하면 10이 되지 => 3)
        • 16 + 3 = 19
        • 10의 자리는 버린다(절사). 결과는 9

앞서 말했든 컴퓨터는 덧셈을 기반으로 뺼샘 연산을 진행한다. 위에서 설명한 보수를 사용하여 뺄셈을 구현해 보자. 원리는 다음과 같다.

  • 2진수에서 0은 1로, 1은 0으로 뒤집으면 1의 보수 (bit 마다 NOT 연산)
  • 1의 보수에 1을 더하면 2의 보수
  • 어떤 숫자에 2의 보수를 더하면 자동으로 2진수 뺄쎔 (단 자리올림은 절사)
  1. 예시) 8 - 3 = 5
    • 8의 2진수: 1000
    • 3의 2진수: 0011
    • 3의 1의 보수 구하기 : 1100
    • 3의 1의 보수에 1 더하기 (2의 보수 구하기) : 1101
    • 8의 2진수 + 3의 2의 보수 = 10101
      • 여기서 자리올림은 버림. 따라서 결과는 0101, 이는 5의 2진수다.
      • 따라서 8 - 3의 결과는 5.

곱셈, 나눗셈

위의 원리를 그대로 적용하여 곱셈은 덧셈을 여러번, 나눗셈은 뺄셈을 여러번 수행해서 구현할 수 있다.

  1. 예시) 3 * 8 = 3 + 3 + 3 + 3 + 3 + 3 + 3 + 3 = 24 (3을 8번 더한 수)
  2. 예시) 24 / 3 = 8 - 3 - 3 - 3 - 3 - 3 - 3 - 3 = 8 (24 에서 3을 8번 뺀 수)

결론

컴퓨터의 본질은 계산이다. ‘Compute’라는 단어에서 알 수 있듯, 컴퓨터는 계산(덧셈, 뺄셈, 곱셈, 나눗셈)을 수행하는 기계다. 컴퓨터가 이러한 계산을 이해하기 위해 진법에 대해 살펴 보았다. 컴퓨터에대해 알기 위해선 2진수, 16진수에 대해 잘 알아 놓자.

그리고, 덧셈과 뺄셈의 원리에 대해 알아 보았다. 컴퓨터에서는 덧셈을 기반으로 뺄셈을 수행하며, 이를 위해 보수라는 개념이 사용된다. 덧셈과 뺄셈을 통해 곱셈과 나눗셈도 구현할 수 있다. 곱셈은 덧셈의 반복이며, 나눗셈은 뺄셈의 반복이다.

AI, 머신러닝 최근들어 핫한 주제들 모두 들어가보면 그 토대는 ‘연산’ 이 있고, 그 연산을 수행하기 위해서 고성능의 부품들(예를들면 GPU)이 필요한 것이다.

This post is licensed under CC BY 4.0 by the author.