C언어

[1] 반가산기의 구조 및 컴퓨터의 연산

Boris 2022. 3. 28. 18:20

 

 

 

반가산기

 

반가산기의 구조

 

- 1비트 2진수 두 개를 더한 합Sum과 자리올림 수 Carry를 구하는 회로

 

- 반가산기의 목적 - CARRY(올림)을 추출해 내는데 더 목적이 있다.

 

A B Sum Carry
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1

- A = 1, B = 1 일때만 Carry가 1을 출력한다. 

 

- 1⑵ + 1⑵ = 2

  2를 2진수로 나타내면 = 10⑵

 

* 문제점 : 자리올림 개념을 고려를 못한다.

 

 

 

4bit의 연산

  1 0 1 1  --- 8+0+2+1 = 11

+0 0 0 1  --- 0+0+0+1 = 1

-----------

  1 1 0 0  ---  8+4+0+0 = 12

 

- 16진수로 나타내면 다음과 같다

   >>> 0xC2

 

 

 

컴퓨터가 연산하는 방법 (1)

- 컴퓨터의 연산은 덧셈을 기반으로 한다.

- 빼기는 더하기를 한 후 앞 자리를 날린값을 구한다.

<ex1>

1) 9 - 6 = 3  이와 같은 식을 6의 보수인 4를 를 더해준다. (10 - 6 = 4)

2) 그럼 9 + 4 = 13 이 된다.

3) 그 후 앞자리 수 1을 날려주면 '3' 이 된다.

4) 컴퓨터의 연산은 이와 같다.

 

 

 

컴퓨터가 연산하는 방법 (2)

<ex2>

1) 3 * 2 = 6 을 연산하는 방법을 알아보자

2) 0 0 1 1⑵ = 3  

3) 곱하기 2는 왼쪽으로 한 칸씩 옮긴다.

4) 그럼 값이 이와 같은 나온다.

5) 0 1 1 0⑵ = 6     (Shift)

 

컴퓨터가 연산하는 방법 (3)

<ex3>

1) 8 / 2 = 4 를 연산하는 방법을 알아보자

2) 1 0 0 0  --- 8

3) 2로 나눌때에는 각 수를 오른쪽으로 한 칸씩 옮긴다. 

4) 0 1 0 0 ---  4

 

 

정리

1. 덧셈 = 기존의 덧셈 방식과 같다.

2. 뺄셈 = 보수를 이용하여 덧셈을 한 뒤 앞자리 수를 삭제한다.

3. 곱셈 = 2로 곱할때엔 각 자리수를 왼쪽으로 한 칸씩 이동 시킨다.

4. 나눗셈 = 2로 나눌때엔 각 자리수를 오른쪽으로 한 칸씩 이동 시킨다.