3월 4일 학습 노트

항상 졸린사람·2023년 3월 4일
0

cs

목록 보기
2/9

드디어 비트 끼리의 연산

오늘은 드디어 비트끼리의 더하기를 배웠는데 내가 생각했던 것 보다 훨씬 복잡하여 좀 이해하는데 오래 걸린 것 같다 ㅠ 일단 비트 끼리 더하려면 추가적으로 알아야할 몇 가지 개념에 대해 더 알아야 한다.

sum과 carry

우선 sum에 대해 알아보면 sum은 비트 끼리의 연산을 할때 계산을 하는 기존의 자릿수에 나온 값을 sum이라 한다 그리고 carry는 sum의 다음 자리에 오는 숫자라고 생각하면 편하다 그림으로 설명해보자면

이진수로 1 + 1을 수행하였을때는 값으 10이 된다 이때 기존의 1 + 1의 자리에 나오는 값 이다 즉 0이 sum 다음 자리에 오는 1이 carry가 된다.

XOR 게이트?

XOR 게이트는 위의 그림과 같이 OR 과 NAND 마지막에 AND 게이트를 조합하여 만드는 게이트이다. 이 게이트를 이용하여 SUM의 결과 값을 계산 할 수 있는데 carry를 계산하는 방법은 여기서 AND 게이트만 붙이면 된다.

한 자리수 끼리의 더하기가 가능한 반가산기

드디어 비트 더하기에 필요한 개념들을 다 배웠고 연산을 할차례이다. 그러기 위해 일단 반가산기에 대해 알아보면 반가산기는 위에서도 나왔듯이 sum과 carry를 계산하기 위해서는 XOR 게이트에서 AND 게이트만 붙이면 된다 하였는데. AND게이트를 붙이면 그것이 반가산기가 되는것이다.
( 위의 그림에서 보면 위에 나오는 처음보는 기호가 XOR 게이트의 기호이다 )

비트의 더하기를 직접해보자!

이제 우선 반가산기를 이용하여 한 자리 비트의 연산을 직접해보도록 하자

SUM계산

EX: A = 1 , B = 0 이라고 숫자를 넣었으면 SUM이나오는 부분의 XOR 게이트( SUM계산 )를 계산해보자
OR 게이트 : A가 1이고 B가 0이지만 OR 게이트는 한군데만 1이면 전류가 흐르는 특성이 있기 때문에 AND 게이트에는 1이 전달된다.

NAND 게이트: A가 1이고 B가 0이여서 AND게이트였으면 전류가 흐를 수 없겠지만 NOT의 특성으로 결과가 반대가 되어 AND에 1이 전달 된다.

마지막 AND게이트: AND게이트에는 양쪽모두 1이 전달 되었으니 전류가 흘러 1이된다.
SUM = 1

CARRY계산

CARRY는 AND 게이트 한번만 하면 되기에 간단하다.

EX: A = 1, B =0( 위의 계산을 이어서 )

AND 게이트: A에는 1 B에는 0이 들어왔고 AND게이트는 양쪽다 1이어여 1을 반환하기 때문에 여기는 0이된다.

CARRY = 0(없음)

결과

결과는 SUM:1과 CARRY:0으로 결과값은 1이된다
( 위쪽의 진리표를 참고하여 한번식 해보고 답이 맞는지 확인해보자 )

반가산기가 두개면? 전가산기!

전가산기는 간단하게 설명하자면 위에서나온 반가산기를 두번 사용하는 것이다 반가산가는 하나의 비트씩 계산하는 계산기였다면 전가산기는 한번 반 가산기로 미리 계산을 해야하기는 하지만 이전 값에서 올라온 CARRY IN을 이용하여 계산이 가능하다!

전가산기라는건 또 어떻게 생긴거지..?

설명이 헷갈릴 수 있으니 OR 게이트오른쪽 C는 CO로 이름을 대체하여 설명한다.

우선 전가산기는 그림이 좀 복잡하지만 이걸 설명하기 전에 CARRY IN과 OUT을 명확하게 설명하고 가야할 것 같다.

CARRY IN과 CARRY OUT


위 그림처럼 CARRY IN은 다음 자리에서 같이 계산되는 수 CARRY OUT은 값으로 나온 CARRY를 말한다.

본격적으로 계산해보자

위 회로도를 보면 X라는 항목이있다. 여기에는 위에서 설명한 CARRY IN이 들어간다는 것을 기억하자

우선 계산하는 방법은 만약 11 + 11을 한다고 가정한다면 우선 첫번째 자리의 1끼리 반가산기로 CARRY IN과 SUB를 구한다

CARRY IN: 1
SUB : 0(값의 가장 뒷 자리가 된다.)

그 후 전가산기의 X와 Y에 앞자리 1 , 1을 넣고 C자리에는 앞서구한 CARRY IN을 넣고 회로를 따라 계산해보면 첫번째 반가산기에서의 결과는 아래와 같을 것이다.

CARRY OUT : 1
SUB : 0

그 다음 아까 구한 SUB인 0과 구했던 CARRY IN인 1을 이용하여 C를 한번더 반가산기로 구하면

CARRY OUT : 1,
SUB : 1

이제 구한 값을 차례대로 나열해보자

  1. 처음 반가산기로 구한 SUB인 0이 가장 뒤

  2. 그 다음 CARRY IN 을 이용하여 구한 CARRY OUT, SUB 순으로 나열한다.
    ( CARRY OUT, 전가산기로 구한 SUB, 가장 처음 반가산기로 구한 SUB 순이다)

결과 : 110

이렇게 전가산기와 반가산기에 대해 정리하는 포스팅을 마치겠다

profile
최대한 쉽고 한국인이 보기 편한 코딩 Velog

0개의 댓글