본문 바로가기
[ 기술 | IT | Technology ]

[2진법 | 컴퓨터] 2진법의 정의와 컴퓨터가 2진법 코드를 사용하는 이유, PC 이진법 코드인 이유

by 【╉Ⅹ¬ ㆍχ】 2023. 11. 2.
728x90
반응형
● 제목 : 2진법의 정의와 컴퓨터가 2진법 코드를 사용하는 이유, PC 이진법 코드인 이유
● 채널 : Slashgear
● 날짜 : 2023.10.16
● 글쓴이 : 윌로우 로버츠

2진법의 정의와 컴퓨터가 2진법 코드를 사용하는 이유:

PC 이진법 코드인 이유

반응형


컴퓨터가 어떻게 작동하는지 잘 모른다면 접근하기 어려운 주제처럼 보일 수 있습니다. 컴퓨터는 일반인이 접근하기 어려운 고차원적인 과학과 수학을 다루고 있기 때문입니다. 실제로는 상당히 복잡할 수 있지만, 컴퓨팅의 핵심은 대부분 대규모로 일어나는 단순한 일들입니다. 따라서 두뇌가 이러한 규모를 받아들일 준비가 되어 있다면 화려한 교육이나 타고난 수학적 재능이 없어도 배우고 이해할 수 있는 것이 많습니다.

2진법은 개념적으로는 간단하지만 실제로는 복잡하며 컴퓨터에게는 모든 것이기 때문에 시작하기에 완벽한 곳입니다. 지금 보고 있는 4K YouTube 동영상, 주머니 속의 스마트폰, 인터넷을 유지하는 서버, 돈을 안전하게 보호하는 뱅킹 소프트웨어의 원동력은 바로 이진법입니다. 이제 2진법이 정확히 무엇인지, 2진법으로 무엇을 하는지, 왜 중요한지 살펴보겠습니다.


이진법이란 무엇인가요?

이진법에 대해 가장 먼저 알아야 할 것은 이진법이 계산 시스템이라는 점입니다. 우리가 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 기호를 사용하여 현존하는 모든 숫자를 표현하는 것처럼, 이진수 계산 시스템에서는 0과 1을 사용하여 동일한 숫자를 표현합니다. 우리가 흔히 사용하는 십진수 또는 10진수라고 하며 10 단위로 숫자를 세는 시스템입니다. 베이스 2라고도 하는 2진법은 2를 단위로 세는 방식입니다. 예를 들어 이 별표 모음을 세어 보겠습니다:

베이스 10 계산 시스템을 사용하면 이 숫자를 5로 표현할 수 있습니다. 기본 2 계산 시스템을 사용하면 101로 표현할 수 있습니다. 두 버전은 매우 다르게 보이지만 별표의 개수는 동일합니다.

그렇다면 정확히 동일한 작업을 수행한다면 두 가지 다른 시스템을 사용하는 이유는 무엇일까요? 계산 시스템은 지극히 상황에 따라 달라지며, 계산을 하는 주체가 편리하고 자연스러운 것을 기반으로 작동합니다. 인간은 손가락이 10개이고 그 손가락으로 숫자를 세기 때문에 10을 기본으로 선택했습니다. 0에서 9까지는 고유한 기호가 있고, 9를 지나면 앞에 1을 추가하고 다시 순환합니다.

손가락이 6개라면 0에서 5까지 고유한 기호를 사용한 다음 앞에 1을 추가하고 다시 순환합니다. 즉, 기본 6에서 "10"은 숫자 6과 동일합니다.


누가 2진수로 세는 것을 선택할까요?

그렇다면 인간이 손가락이 10개이기 때문에 10진수를 선택했다면, 누가 2진수로 세는 것을 선택할까요? 손가락이 없는 오리발이 두 개뿐인 거북이일 수도 있겠죠. 아니면 손가락이 없는 날개가 두 개뿐인 펭귄일 수도 있습니다. 또는 컴퓨터를 구성하는 아주 작은 구성 요소는 켜짐(1) 또는 꺼짐(0)의 두 가지 상태만 있기 때문에 컴퓨터일 수도 있습니다.

컴퓨터의 핵심은 전류를 사용하여 스위치를 켜고 끄는 기계입니다. 각 스위치는 오직 켜지거나 꺼질 수 있으며 다른 결과는 없습니다. 즉, 컴퓨터가 숫자를 세려면 기본 2로 제한됩니다. 0과 1이라는 두 자리 숫자가 있고, 1을 통과하면 앞에 1을 더하고 다시 순환해야 합니다. 즉, 이상하게 보일지 모르지만 1은 1이고 2는 10입니다. 2진법을 사용하면 처음 5개의 숫자를 이렇게 표현할 수 있습니다:

0 = 0
One = 1
Two = 10
Three = 11
Four = 100
다섯 = 101

이 시스템에서 숫자는 스위치이며, 표현할 수 있는 스위치만 충분하다면 원하는 숫자는 무엇이든 저장할 수 있습니다. 예를 들어 스위치가 8개라면 0에서 255 사이의 모든 숫자를 2진수로 쓸 수 있습니다. 0은 00000000, 255는 11111111과 같이 표시됩니다. 256으로 가려면 여분의 숫자를 나타내는 스위치를 하나 더 추가해야 합니다(100000000).


컴퓨터는 2진수를 어떻게 사용하나요?

이제 숫자를 2진수로 표현하도록 여러 개의 스위치를 구성할 수 있다는 것을 알았지만, 정확히 어떤 용도로 사용할 수 있을까요? 어떻게 사용하거나 조작하거나 다른 숫자에 추가할 수 있을까요? 그 해답은 바로 논리 게이트라는 것입니다.

이름에서 알 수 있듯이 논리 게이트는 열어서 전류를 통과시키거나 닫아서 그 경로를 차단할 수 있습니다. AND, OR, XOR, NAND와 같은 다양한 유형의 게이트가 있으며, 게이트를 열기 위해 충족해야 하는 요구 사항이 모두 다릅니다. 게이트가 생성하는 개방 또는 폐쇄 결과를 출력이라고 하며, 이러한 출력에 숫자를 할당하면 0은 폐쇄(차단된 전류), 1은 개방(흐르는 전류)을 의미합니다.

게이트에는 일반적으로 하나의 출력만 있지만, 많은 게이트에는 서로 다른 위치에서 두 개 이상의 전류가 들어오는 다중 입력이 있습니다. 게이트가 수신하는 입력(전류가 없는 경우 0, 전류가 흐르는 경우 1)과 게이트의 목적(OR, AND 등)의 조합에 따라 출력이 결정됩니다.

두 개의 입력과 하나의 출력이 있는 AND 게이트를 예로 들어 보겠습니다. 게이트가 1을 출력하려면 입력이 1 AND 1이어야 합니다. 그렇지 않으면 출력은 0이 됩니다. OR 게이트가 열리려면 입력 중 하나 또는 다른 하나가 1이어야 합니다. 둘 다 1이 아니거나 둘 다 1이면 닫힌 상태로 유지됩니다.


그렇다면 논리 게이트는 숫자를 더할 수 있을까요? (스포일러: 예)

논리 게이트가 할 수 있는 일은 매우 멋지지만, 개별적으로는 실용적인 응용을 상상하기 어려울 수 있습니다. 하지만 올바른 유형의 게이트를 올바른 숫자와 올바른 순서로 결합하면 두 숫자를 더할 수 있습니다. 물론 이 작업을 수행하려면 수백 개의 게이트가 필요하므로 여기서 설명하기에는 다소 복잡하고 많은 양이 필요합니다. 하지만 할 수 있습니다! 이 글을 읽고 있는 기기가 그 증거입니다. 숫자를 표현하고 더할 수 있는 힘이 생기면 거의 모든 것을 할 수 있는 힘이 생기니까요!

극적으로 들리지만 사실입니다. 컴퓨터는 숫자를 더할 수는 있지만 빼기, 나누기, 곱하기는 직접 할 수 없습니다. 컴퓨터는 덧셈을 사용하여 다른 수학적 연산을 우회적인 방식으로 에뮬레이션합니다. 하지만 매초 수백만 개의 작은 연산을 수행할 수 있기 때문에 설명이 길어 보이지만 실제로는 전혀 시간이 걸리지 않습니다.

하지만 2진수로 합계를 계산하는 것은 비디오 게임을 만들거나 달로 가는 경로를 그리는 것과는 거리가 먼 것처럼 느껴집니다. 간단한 수학적 연산이 어떻게 이렇게 복잡한 결과를 만들어낼 수 있을까요? 글쎄요, 그냥 그렇습니다. 머릿속에 그 많은 작은 연산을 한꺼번에 담을 수 없기 때문에 큰 그림을 그리는 것은 말할 것도 없고, 이해하기 어렵지만 사실입니다.


이진법  코드는 숫자만 나타낼 수 있나요?

우리는 2진수를 계산 시스템으로 보고 시작했지만, 2진수가 할 수 있는 일은 그것뿐이 아닙니다. 컴퓨터와 통신하는 데 사용할 수 있는 유일한 수단이기 때문에 모든 종류의 정보를 인코딩하는 데 사용합니다. 한 가지 분명한 예는 텍스트입니다. 컴퓨터는 사람처럼 "안녕하세요"라는 단어를 읽을 수 없기 때문에 각 문자는 이를 나타내는 이진법 코드가 있어야 합니다.

컴퓨터의 첫 번째 문자 인코딩 표준은 ASCII라고 불렸으며, ASCII로 "hello"를 작성하면 다음과 같이 보입니다: 01101000 01100101 01101100 01101100 01101111. 그러나 사람이 ASCII를 읽으려면 일반적으로 가독성을 높이기 위해 다른 코드로 표현하기 때문에 "hello"는 다음과 같이 보일 수도 있습니다: 68 65 6C 6C 6F.

문자 인코딩 시스템은 사용하는 비트 수, 즉 2진수 숫자에 의해 제한됩니다. 초기 버전의 ASCII는 7비트 코드를 사용했기 때문에 0000000에서 1111111 사이의 모든 이진수(10진수 0~128)에 문자를 붙일 수 있었습니다. 128개의 슬롯을 채울 수 있었기 때문에 소문자, 대문자, 숫자, 다양한 기호와 문장 부호를 포함할 수 있었습니다.

점자와 모스 부호도 2진법이기 때문에 이런 종류의 코딩 시스템은 새로운 것이 아닙니다. 점자는 솟아오른 점 또는 평평한 점이고 모스 부호는 점 또는 대시입니다.


프로그래머도 이진법 코드를 작성하나요? (스포일러: 아니요)


앞서 인간은 컴퓨터 내부에서 일어나는 수십억 개의 연산을 추적할 수 없다고 언급했는데, 그렇다면 프로그래머는 어떻게 추적할 수 있을까요? 정답은 당연히 그렇지 않다는 것입니다. 프로그래머는 어떤 게이트가 어떤 출력을 생성하는지, 1010000110101010 이 10진수인지 알 필요가 없습니다. 이 모든 것이 프로그래머의 도메인 아래 여러 계층에서 일어나고 있기 때문입니다.

이미 알고 계시겠지만, 프로그래머와 소프트웨어 엔지니어는 C++, C#, Python, JavaScript와 같은 프로그래밍 언어로 코드를 작성합니다. 이러한 언어는 사람이 이해하고, 읽고, 쓸 수 있도록 설계되었으며, 사람이 작성한 후에야 컴퓨터가 읽고 실행할 수 있는 이진법 데이터 형식으로 변환됩니다.

이와 같은 프로그래밍 언어를 "상위 수준" 언어라고 하며, 하드웨어 자체의 내부 작동에 가까워질수록 "하위 수준"의 언어가 많아집니다. 일부 엔지니어는 어셈블리 코드와 같은 저수준 언어를 사용하기도 하지만, 이 경우에도 0과 1을 입력할 필요는 없습니다. 위 그림을 보면 오른쪽에 C++ 코드가 있고 왼쪽에 어셈블리 코드가 있는 것을 볼 수 있습니다.


이제 마무리할까요?

컴퓨터 사용자나 많은 프로그래머가 잘 보지 못하지만 이진법 코드는 컴퓨터의 생명선입니다. 켜짐 또는 꺼짐, 열림 또는 닫힘, 전류 또는 없음, 1 또는 0 등 어떻게 보든 이 두 가지 상태는 컴퓨터가 읽을 수 있는 유일한 정보이며 출력할 수 있는 유일한 정보입니다. 하지만 수학의 마법과 정보 인코딩의 다양성 덕분에 응용 분야는 놀라울 정도로 다양합니다.

이진법 와 컴퓨터의 작동 방식은 당연히 방대하고 복잡하기 때문에 여기서는 표면적인 수준의 논의에 불과합니다. 누구나 이진법 를 이해하는 데 필요한 지식을 가지고 있으며, 단지 다룰 내용이 많을 뿐입니다. 이진법 게이트와 논리 게이트가 어떻게 컴퓨터가 되는지 궁금하다면 이 책을 읽어보세요. 이제 이진수와 이진수의 작동 원리에 대해 조금 알게 되었으니, 이를 축하하기 위한 농담을 하나 해보겠습니다: 세상에는 2진수를 이해하는 사람과 그렇지 않은 사람 등 10가지 유형의 사람들이 있습니다.

반응형

댓글