WinCNT

컴퓨터 개론 - 컴퓨터는 어떻게 판단하는가? 본문

게임 프로그래밍(학습 내용 정리)/컴퓨터 개론

컴퓨터 개론 - 컴퓨터는 어떻게 판단하는가?

WinCNT_SSS 2021. 10. 7. 17:37

컴퓨터는 전류가 흐른다(0) / 전류가 흐르지 않는다(1)는 알게 되었다

그런데 0과 1이라는 2가지 상태는 이 세상의 것들을 판단하고 표현하기에는 충분치 않다

 

하지만 다행히 0과 1만으로 형식화한 대수 체계인 불 대수(Boolean algebra)가 이미 존재하고 있었으며

컴퓨터는 이를 논리 회로(Logic Gate)를 통해 구현하여 전기적 신호를 판별할 수 있게 되었다

 

불 대수(Boolean algebra)

불 대수(Boolean algebra)란?
19세기 중반 영국의 수학자 조지 불(George Boole)이 고안하고 형식화한 대수 체계를 의미합니다.
불 대수에서는 어떤 명제의 참과 거짓이진수 1과 0에 대응시켜서 명제간의 관계를 수학적으로 표현합니다.
by 위키백과

불 대수에서는 우리가 집합을 배울 때 보았던 AND, OR 등이 +나 -와 같은 연산자로 사용된다

예를 들어 A와 B의 명제에 대한 AND라는 연산자의 논리 연산은 다음과 같다

  • A AND B
    A B 반환값
    거짓(0) 거짓(0) 거짓(0)
    거짓(0) 참(1) 거짓(0)
    참(1) 거짓(0) 거짓(0)
    참(1) 참(1) 참(1)

컴퓨터는 위와 같은 연산을 논리 회로(Logic Gate)를 통해 하게 된다

 

논리 회로(Logic Gate)

논리 회로(Logic Gate)란?
불 대수를 전자 회로라는 물리적 장치에 구현한 것이다
하나 이상의 논리적 입력 값에 대해 논리 연산을 수행하여, 하나의 논리적 출력 값을 얻는다
AND, OR, NOT 등기본 불 대수를 수행하며, 이러한 불 대수의 결합으로 복합적인 논리 기능을 수행한다

전에도 나왔지만 데이터란 0과 1(bit)의 상태라고 할 수 있습니다. 이는 주로 메모리에 유지되고 있다

그리고 메모리에 유지되고 있는 0과 1(bit)의 상태바꾸는 것CPU의 역할이며,

이는 논리 회로를 통해 수행하게 된다

(복잡한 판단을 위해서는 여러 논리 회로를 결합해야 하지만...)

 

논리 연산의 가장 기본이 되는 연산자는 AND, OR, NOT이 있으며, 이는 보통 다음과 같은 기호로 표시한다

기본 불 대수(AND, OR, NOT)의 논리 회로의 추상화와 논리표

그 외에도 다음과 같은 논리 회로가 존재한다

기본 불 대수 이외의 논리 회로 추상화와 논리표

반가산기(Half Adder)에 대해서

반가산기(Half Adder)란?
이진수의 한자리수를 연산하고, 받아올림수는 받아올림수 출력(carry out)에 따라 출력하는 가산기
AND, OR, NOT의 세 가지 종류의 논리회로만으로 구성할 수 있다
by 위키백과

컴퓨터의 덧셈에 있어서 가장 기본이 되는 것이 바로 반가산기(Half Adder)

반가산기는 오직 한자리수를 계산할 수 있다

십진수로 예를 들면, 7 + 5와 같은 계산을 수행한다는 것

 

반가산기의 경우, 계산 결과는 S에 출력하며 자리올림(Carry)가 발생하였을 경우는 C에 1를 출력하며,

최종값은 2C+S과 같다(C는 자리올림, 즉 2의 자리이기 때문에 2를 곱하는 값과 같기 때문)

반가산기의 추상화

전가산기(Full Adder)에 대해서

전가산기(Full Adder)란?
이진수의 한 자릿수를 연산하고, 하위의 자리올림수 입력을 포함하여 출력하는 가산기
하위의 받아올림수 출력상위의 받아올림수 입력연결함으로써 임의의 자리수의 이진수 덧셈이 가능하다
하나의 전가산기는 두개의 반가산기와 하나의 OR로 구성된다

전가산기의 추상화

 

이러한 전가산기를 여러 개 결합함으로써 드디어 2진수끼리의 덧셈이 가능해진다

전가산기를 4개 결합하면 4bit까지의 2진수의 덧셈을 수행할 수 있다.

컴퓨터에서의 음수 표현

우리는 마이너스 부호(-)를 이용하여 간단히 음수를 표현한다

예를 들어 10의 음수는 -10으로 간단히 표현할 수 있음

 

그렇다면 컴퓨터에서는 어떻게 음수를 표현해야 할까?

아쉽게도 컴퓨터는 0과 1만 있을 뿐이라 마이너스 부호를 사용할 수는 없다

 

따라서 음수를 고안하기 위해 다음과 같은 방법들이 고안되었다

  • 부호화 절대치 방법(Signed Magnitude)
    • 부호 비트를 제외한 수를 양수로 읽고, 마이너스를 붙이는 방법
  • 1의 보수 방법(1's Complement)
    • 총 n개의 비트로 정수를 표현할 때, 모든 n비트가 1로 이루어진 수에서 표현하고 싶은 음수의 절댓값을 뺀 수가 바로 1의 보수 방법으로 표현한 음수
    • 결과적으로 어떤 음수를 1의 보수 방법으로 표현하고 싶다면 그 음수의 절대값의 모든 비트 숫자들을 반전시키면 된다.(0 은 1로 반전, 1은 0으로 반전)
  • 2의 보수 방법(2's Complement)
    • 총 n개의 비트로 정수를 표현할 때, 2^n = 1000...0에서 표현하고 싶은 음수의 절댓값을 뺀 수가 바로 2의 보수 방법으로 표현한 음수
    • 결과적으로 어떤 음수를 2의 보수 방법으로 표현하고 싶다면 그 음수의 절대값의 모든 비트 숫자들을 반전시킨 후에(0 은 1로 반전, 1은 0으로 반전) 1을 더하면 된다. 즉, 1의 보수 방법 + 1 = 2의 보수 방법

 

여기서 주의해야 할 것은 보수의 개념과 보수 방법의 개념이 같지 않다는 것이다

편의상 2의 보수 방법2의 보수로 줄여서 말하는 경우가 많지만

실제로 보수는 더해서 어떠한 수가 되기 위한 수를 의미한다

(예를 들어 3에 대한 10의 보수는 7, 5에 대한 15의 보수는 10이라고 하는 것처럼)

 

음수 표현에서의 보수 방법은 각 자리의 비트에 대한 것으로 이해하시면 될 것 같다...

 

일반적으로 컴퓨터에서는 보통 2의 보수 방법 음수를 표현하고 있다

(부동 소수점의 음수 표현에는 부호화 절대치 방법을 사용하기도 하지만)

1의 보수 방법은 +0, -0이 동시에 표현된다는 문제점과,

최상위 비트에서 받아올림(Carry)이 발생(end around carry)하면 계산이 귀찮아지기 때문임

 

음수 표현을 고려한 감가산기의 추상화는 다음과 같다

산술 논리 장치(ALU)

산술 연산과 논리 연산을 하는 디지털 회로이다

논리 회로를 조합해서 산술 연산을 할 수 있다

 

참고 사이트

https://st-lab.tistory.com/189

 

2진수의 수와 음수 표현법 [1의 보수와 2의 보수]

안녕하세요. 오늘은 프로그래밍이 아닌 컴퓨터의 연산에 대해 이해해보고자 합니다. 우리가 흔히 프로그래밍을 할 때는 그나마 사람에 가까운 언어로 된 고급언어들로 작성을 하지만 실제 컴퓨

st-lab.tistory.com

https://ko.wikipedia.org/wiki/%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90

 

부동소수점 - 위키백과, 우리 모두의 백과사전

초기의 전기기계식 프로그래밍 가능한 컴퓨터 Z3에는 부동소수점 산술 기능이 포함되었다. (뮌헨의 국립 독일 박물관) 부동소수점(浮動小數點, floating point) 또는 떠돌이 소수점[1] 방식은 실수를

ko.wikipedia.org

https://docs.microsoft.com/en-us/cpp/c-language/c-operators?view=msvc-160 

 

C Operators

Learn more about: C Operators

docs.microsoft.com

http://tcpschool.com/cpp/cpp_operator_arithmetic

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

https://docs.microsoft.com/ko-kr/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-160 

 

C++ 기본 제공 연산자, 우선 순위 및 연관성

자세한 정보: C++ 기본 제공 연산자, 우선 순위 및 연관성

docs.microsoft.com

https://ndb796.tistory.com/4

 

1의 보수와 2의 보수를 이해하자!

● 정수 표현 컴퓨터는 N개의 비트를 이용해 2^N개의 정수만 표현할 수 있습니다. 이러한 방식을 이용해서 수를 표현해야 하기 때문에 쉽지 않습니다. 또한 정수는 음의 정수와 양의 정수로 나누

ndb796.tistory.com

 

SSS