본문 바로가기
CS 이론/컴퓨터 구조론

컴퓨터 구조론 1부 <2진법과 트랜지스터>

by Suff07 2024. 1. 15.

 

 

목차

    1. 컴퓨터의 데이터는 2진법으로 표현된다.

    먼저, 컴퓨터의 데이터는 2진법으로 표기가 됩니다.

     

    그러면 아마 몇몇 분들은 이 의문을 제기할겁니다.

     

     

    왜 2진법을 씁니까? 3진법을 써도 되고 10진법을 써도 되잖아요?


    사실, 저도 왜 2진법을 쓰는지에 대해서 의문이 들었던 적이 있었습니다. 아주 오래전에 고안된 2진법이 왜 아직도 쓰이는지에 대해서 말이죠. 그리고 2진법과 논리 회로가 어떤 연관이 있는지도 궁금했었습니다.

     

    일단 논리 회로에 관한 이야기는 잠시 미뤄두고 2진법을 굳이 쓰는 이유를 먼저 생각해봅시다.

     

    우선 그전에 트랜지스터에 관해 먼저 설명을 하는게 옳을것 같습니다.


    1-1. 트랜지스터의 발명

    트랜지스터의 역할은 쉽게 말하면 전류의 흐름을 제어합니다.

     

    일단 잠시 고등학생 시절로 돌아가서 전류와 전자의 흐름을 복기 시켜봅시다.

     

    1. 전류양극에서 음극으로 간다.

    2. 전자는 그 반대인 음극에서 양극으로 이동한다

    그리고 한가지 법칙을 더 추가합시다.

    3. P에는 양공이 있고 N에는 전자가 있다.

     

     

    위에서 이야기했다시피 P라고 적힌곳에 동그라미가 보일겁니다. 이것을 양공 \(\textit {(Postitive hole)}\)이라 합니다. 그러니까 쉽게 말하면 전자가 빠진 구멍이라 이해하면 됩니다.

     

    N에 적힌 e는 전자입니다.

     

    전자는 음극에서 양극으로 이동하니 당연히 P의 방향으로 이동을 안할것입니다.

    양공 또한 전류의 방향대로 움직이니 당연히 이동을 안할거구요.

     

    그러니까 이 상황에서는 전류가 절대 흐르지 않습니다.

     

    이러한 상태를 우리는 역방향 전압 <Reverse Bias> 이라 칭하겠습니다.

    그리고 이상태에서 앞에 P를 붙여보면 아래와 같은상황이 나올 겁니다.

     

     

     

    먼저 첫번째로 V1에 전압을 주면 왼쪽 회로의 전류가 시계방향으로 돌아가는게 보일겁니다.

     

    그리고 P에 있는 양공은 전류를 따라 흐르고 N속의 전자는 그 반대로 흐를겁니다. <이렇게 양공이 전류의 방향대로 흘러가는것을 정방향 전압이라 합니다.>

     

     

     

     

    그리고 오른쪽 파란색 네모부분의 회로는 역방향 전압입니다.

    <파란색 네모부분만 존재한다면 절대로 흐르지 않는것은 위에서 설명했습니다.>

     

    그런데 양공이 N에 존재하죠? 그리고 음극이 오른쪽 P에 연결이 되어있습니다.

    그러면 당연히 양공은 NP방향대로 흘러갈겁니다. 아주 직관적이죠.

     

    IA = IB +IC로 된다는것 또한 이렇게 보면 이해가 됩니다.

     

    자 이렇게 왼쪽 P의 양공이 오른쪽 P방향으로 이동하는 장면을 보게 되었는데요.

    이때 왼쪽의 P를 우리는 이미터(양공을 방출한다는 의미)라 합니다.

    오른쪽 P콜렉터 (양공을 흡수한다는 의미) 라 합니다.

     

    NPN에 관한 설명은 아래 유튜브 영상이 더 자세하고 직관적이니 참고하세용

    https://www.youtube.com/watch?v=T1eMKml3iE0

     


    1-2. 그래서 왜 2진법을 쓰냐니까요?

    자 이제 다시 본론으로 돌아오겠습니다.

    트랜지스터는 전류의 흐름을 제어하는 역할이라 분명히 이야기했습니다.

    그러니까 스위칭의 역할도 있다 이거죠.

     

     

    다음과 같이 스위치가 열려있다면 0이고 열려있다면 1로 취급할 수도 있다 이겁니다.

     

     

    다른말로 표현하자면 전압에 대한 기준치가 50프로 이상이라면 True 취급하면 되고, 이하라면 False로 취급하면 될 문제라 이겁니다.

     


     

    그러면 여기서 만약 3진수 4진수 10진수를 표현한다면 어떻게 될까요?

     

    일단 4진수로 표현을 해봅시다.

     

     

    이 말은 다음과 같습니다.

     

    • 0이상 25% 이하 : 0
    • 25이상 50% 이하 : 1
    • 50이상 75% 이하 : 2
    • 75이상 100% 이하 : 3

    만약 2진법을 쓰는 트랜지스터가 8개가 있다고 치면 다음과 같은 데이터의 숫자를 표현 할 수 있을겁니다.

     

     

     

    그리고 4진수로 바꾸면 다음과 같죠.

     

     

     

    정보의 갯수가 훨씬 많아지게 되었습니다.

     

    이게 얼핏보면 좋아보일거 같지만....

     

    문제는 그만큼 정보의 불안정성이 높아진다.


    이게 무슨말이냐면 다음과 같습니다.

     

     

    이 그림을 다시 한번 잘 생각해보시길 바랍니다.

     

    예를 들어서 여러분들이 코딩을 했다 칩시다.

     

    코딩을 다하고 컴파일을 통해서 바이너리 코드로 변환후 이를 실행시켜야 하는데 이때 번개가 "콰쾅"하고 쳤다 생각해보세요.

     

    그래서 트랜지스터가 0과 1의 경계에서 아슬아슬하게 있다 치고 몇몇 코드가 잘못 해석이 됐을 수도 있습니다.

     

    반면에 4진법으로 인식을 하게 된다 치면 아까는 0으로 인식해도 될법한 범위가 0과 1로 늘어났잖아요?

     

    그러면 아까는 잘못된 부분이 적었던 반면에 4진법으로 바꾸면 잘못된 부분이 현저하게 많아진다 이겁니다.

     

    확률적으로 따져봐도 2진법은 코드가 맛이 갈 확률이 4진법에 비해서 현저하게 적죠.

     

    그러니까 유지보수의 문제때문에 2진법을 사용하고 있다로 결론이 내려집니다.

     


     

     

    추가적으로, 0과 1만을 쓰는것과 0,1,2,3의 계산속도의 면에서도 차이가 두드러집니다.

     

    쉽게 예를 들어봅시다.

     

     

    여러분이 동전을 던지는것과 주사위를 던지는 경우를 생각해봅시다.

     

    단순하게 확률로 따지면 동전은 50%의 확률로 앞이냐 뒤냐가 결정 됩니다.

    그리고 주사위는 약 17%로 특정 주사위의 눈이 나올 확률이 결정 됩니다.

    당연하지만 고등학교 수학때 확률과 통계를 배웠다면 정말 직관적으로 알 수 있습니다.

    여기서 대수의 법칙[각주:1] 을 한번 적용해봅시다.

     

    툭 까놓고 생각해서, 동전이 시행횟수가 더 많을까요? 주사위가 시행횟수가 더 많이 나올까요?

    누가봐도, 동전이 50프로에 도달할 수 있는 시행횟수가 주사위가 17프로에 도달하기 위한 시행횟수보다 훨씬 적을겁니다.

     

    그러니까, 동전은 1만번만 던지면 50프로에 근접한데 주사위는 경우의 수가 많으니까 한 6만번을 던져야 17프로에 보다 가깝게 나올수 있다 이겁니다.

     

    시행 횟수가 컴퓨터가 연산을 해야하는 비용이나 시간이라 생각해보면 2진법을 쓰는게 합리적이라고 결론을 내릴 수 밖에 없습니다.

     


    1-3. 비트와 바이트

     

    이제 드디어 비트라는것을 이야기 해보겠습니다.

     

    비트란 가장 작은 정보단위로써 0과1을 나타냅니다.

    (더 정확하게 비트라는 개념은 섀넌이 정한 정보량인 정보 엔트로피의 정보단위가 시초입니다.

    이에 대한 내용은 https://angeloyeo.github.io/2020/10/26/information_entropy.html

     

    정보 엔트로피(information entropy) - 공돌이의 수학정리노트 (Angelo's Math Notes)

     

    angeloyeo.github.io

    에서 잘 정리가 되어있습니다.)

     

     

    전구 하나가 1비트라고 이해하면 됩니다. 꺼짐이 0 켜짐이 1이라 생각하면 되겠죠?

     

    그러면 2비트는 전구가 두개라는 의미죠?

     

    다음과 같이 4가지가 표현이 됩니다.

     

    3비트는 전구가 3개라는 의미입니다.

     

     

     

    다음과 같이 8가지로 표현이 됩니다.

     

    N비트는 이렇게 \(2^{n}\) 가지의 정보를 표시 할 수 있습니다. 

     

     

    그러면 바이트는 무엇이며 대체 왜 나왔을까요?

     

    바이트란 데이터를 처리하기위한 컴퓨터의 최소단위입니다.

     

    역사는 잠시 1950년대로 거슬러 올라갑니다. 이 당시의 컴퓨터의 데이터 처리 단위는 각각 자기 맘대로였어요.

     

    이때 밴 톰슨이라는 컴퓨터 과학자가 규격을 정하자고 이야기가 나온것이 지금의 바이트가 되었습니다.

     

    1Byte = 8bit입니다.

     

    그리고 1바이트로 표현할 수 있는 정보의 숫자는 \(2^{8}\) 즉 256가지입니다.

    (그 당시에는 영어랑 기호 몇개만 하는데 256가지면 되지 뭘 더 바라냐 라는 식으로 어물쩡 넘겼지만 이 세상의 언어가 너무 많아서 현재는 유니코드라는 개념이 도입되었습니다. 이에 대한 설명은 기회가 되면 해보겠습니다.)

     

     

    1-4. 2진법의 음수를 표현해보자

    2진법을 계산하는 과정은 상대적으로 쉬우니 패스 하도록 하겠습니다.

     

    2진법의 음수를 나타내려고 한다면 컴퓨터는 어떻게 할까요?

     

    그래서 나온것이 2의 보수라는 개념입니다.

     

    다 필요 없고 한번 예시를 들어서 설명해보겠습니다.

     

     

     

     

    먼저 1011이라는 2진수가 있다 칩시다.

     

    여기서 1과 0을 전부 뒤집어 버리는겁니다!

     

    그러면 0100으로 표현이 되죠?

     

    여기에 1만 더하면 끝입니다.

     

    (※ 여기서 한가지 의문점이 들텐데 0101이라는 숫자가 어째서 음수로 인식이 되지에 대해서는 Flag가 그 역할을 맡습니다.)


    2. 16진법이 찾아왔다!

    하지만 2진법은 문제가 많습니다.

    2진법으로 숫자를 표현하기에는 길이가 무지하게 길다는게 최대의 문제점이었죠!

     

    아마 C언어에서 포인터를 만져보신분이라면 0x1c뭐시기 이런거 많이 봤을겁니다.

    메모리 또한 엄청나게 크잖아요? 이를 위해 나온것이 16진법입니다.

     

    16진법은 십진법상으로 16이 되면 자리수를 올립니다.

     

    그러니까 16이 되면 \(10(16)\)이 되고 17이면 \(11(16)\) 이 된다 이거죠.(괄호는 진법을 나타내기위해 씁니다.)

     

    그리고 0x10은 16과 같은 의미입니다. 0x가 16진법이라고 표기해주는거에요~

     

    2-1. 2진법과 16진법 변환하기

     

    딱 한가지 포인트만 기억하면 됩니다.

    4자리숫자로 끊어보자!

     

    먼저 16진법에서 2진법으로 바꿔보는 연습을 해봅시다.

     

     

    위의 그림을 보면 1A2B가 보이죠?

    1을 끊어서 2진법으로 변화시켜보면 0001이 나옵니다.

    A를 2진법으로 해석해보면 1010이 나오고요.(10진법으로 10이니까요.)

    2는 0002, B는 1011로 해석이 됩니다.

    그리고 이를 쭉 나열하면 끝입니다. 쉽죠?

     

     

    반대로 11010101로 해석해봅시다.

     

    먼저 4자리 숫자로 끊어서 해석해보세요. 1101     /    0101 이런식으로요

     

    1101은 16진수로 표현하면 D잖아요.(15니까)

    0101은 16진수로 표현하면 5죠?

    그러면 0xD5가 됩니다.


    3. 요약정리

    • 컴퓨터를 2진법으로 쓰는 이유는 트랜지스터의 특성과 정보처리의 보수 용이성 때문이다.
    • 비트는 데이터의 최소단위로써 0,1로 구성되어있다.
    • 바이트는 데이터를 처리하기 위한 컴퓨터의 최소단위로써 1바이트 = 8비트
    • 2진수를 음수로 나타내기 위해서는 2의 보수라는 개념을 사용한다.
    • 16진수와 2진수의 변환 키포인트는 네자리수이다.

     

    1. 대수의 법칙은 쉽게 말하면 실행하는 횟수가 많아지면 많아질수록 수학적으로 계산한 확률에 가까워진다는 의미로 이해하면 됩니다.즉, 동전 앞면이 나올확률이 50%잖아요. 문제는, 저희가 동전을 10번 던지면 앞면이 8번이 나올수도 있죠. 반면에 동전을 10000번 던지면 5500번정도가 앞면이 나올수도 있습니다. 비교해보면 후자가 확률에 더 가깝죠? 이런것을 대수의 법칙이라 합니다. [본문으로]

    'CS 이론 > 컴퓨터 구조론' 카테고리의 다른 글

    컴퓨터 구조론<프롤로그>  (0) 2024.01.15