본문 바로가기

CS ﹒ Algorithm/Computer architecture

컴퓨터 구조 (1) 비트 / 불대수, 드모르간의 법칙 / 2진법 개념

이게 웃기니? ㅎㅎ

 

 

1. Bit

 

bit가 무엇인가? bit가 0과 1 중에 하나를 나타낸다는 것은 모두 알고 있는 사실이다.

기본적으로 우리는 전기 신호를 연결하면 비트를 1이라고 하고, 연결되지 않았다면 0이라고 표현한다.

그리고 Bit가 혼자 있을 때 가장 기본적인 사용법은 "참과 거짓의 표현"인데, 이 때 1을 참이라고 치고, 0은 거짓으로 친다.

중요한 것은 '~치고'라는 말이다.

 

마치 세종대왕이 이전까지 존재하지 않았던 한글을 만들어서 "이렇게 읽는다고 치고" 백성들에게 전파한 것과 같다.

왜 기역을 ㄱ 모양으로 만들었는지, 왜 기역이라고 읽는지 궁금해하는 것은 전혀 문제가 없다. 당신이 최소한 한글을 완벽하게 알고 있다면..

 

우리는 비트 1과 0을 부르는 방식이 마치 피자를 피자라고 부르고 햄버거를 햄버거라고 부르는 것과 같은 하나의 약속이라는 사실을 기억해야 한다.

이것을 마음속에 잘 새겨놓아야 2진법 표현, 계산 방식, 부동소수점, 8진법, 16진법, ASCII 등 비트의 표현 방법들을 배울 때 혼란스럽지 않을 수 있다.

 

 

 

 

 

2. 불 대수와 드모르간 법칙

 

 

 

보자마자 뒤로가기를 누르고 싶겠지만 그냥 한 번 보라고 올린거지, 우리가 다음 주에 시험치는 학생은 아니기 때문에 외울 필요는 없다.

 

이 글을 읽을 사람들은 이미 대부분 확률로 NOT, AND, OR, XOR에 대해 알고 있을텐데, 비트를 참 거짓으로 표현했을 때 명제와 명제간의 관계를 수학적으로 표현한 학문이 불 대수이다.

 

예를 들자면 보원 법칙은 A + NOT(A) = 1이라는 뜻인데, 당연한 말이다.

A가 만약 거짓이라면 0 + NOT(0) = 1일 것이고, A가 참이라면 1 + NOT(1) = 1이기 때문이다.

 

다만 불 대수와 드모르간 법칙은 컴퓨터, 전자 공학의 아주 중요한 이론 중 하나이기 때문에 이런 게 있구나 정도는 알고 넘어가면 된다.

특히 드모르간의 법칙은 NOT을 활용하면 OR과 AND가 서로를 대신할 수 있다는 것인데, 이는 NAND 게이트 구조 설계에 활용되며 그렇게 만들어진 메모리가 바로 우리가 익히 알고있는 플래시 메모리(NAND flasy memory)이다.

NAND과 NOR은 컴퓨터 구조로 넘어가면 지겹도록 언급되는 아주 중요한 친구들이다.

 

 

 

 

 

3. 2진법 개념

 

대부분 2진법에 대해 알고 있겠지만 그래도 한 번 설명하고 넘어가도록 하겠다.

우리가 손가락이 10개라서 10진법을 기본 정수 표현 방법으로 쓰게 된 것처럼, 컴퓨터는 0과 1의 신호가 컴퓨터가 알고 있는 전부이기 때문에 2진법으로 정수를 표현한다.

 

컴퓨터는 손가락이 2개인 사람이라고 생각하면 쉽다.

0, 1을 셌으면 손가락이 부족하기 때문에 다음 자리로 넘어가서 0, 1을 세고, 다시 손가락이 부족하기 때문에 0, 1을 세는 것이다.

 

10³ 10² 10¹ 10⁰   2⁰
1 3 2 8   1 0 0 1
      =1328         =9

 

10진수는 밑이 10이며 각 자리수마다 지수가 1씩 증가한다, 그리고 해당 값을 모두 곱해서 더한 값이 1328이다.

2진수는 마찬가지로 밑이 2이며 자리수마다 지수가 1씩 증가한다, 그리고 해당 값을 모두 곱해서 더한 값은 9이다.

 

10진수로 표현할 수 있는 값의 범위는 숫자의 개수에 의해 제한되며, 2진수로 표현할 수 있는 값의 범위는 비트의 개수에 의해 제한된다.

2진법으로 숫자를 표현할 때, 비트가 4개면 16에서 0.15까지 표현할 수 있으며, 64비트에서는 무려 18,446,744,073,709,551,616 ~ 0.18.446.744.073.709.551.615까지 표현할 수 있다.

 

이 때 각 비트에서 가장 큰 비트를 "가장 큰 유효 비트(MSB)"라고 부르고, 가장 작은 비트를 "가장 작은 유효비트(LSB)"라고 부른다.

(예를 들어, 1000이라는 4비트에서 MSB는 가장 좌측의 1이고 LSB는 가장 우측의 0이다.)