본문 바로가기
나의 개발일지/CS

0과 1의 세계 - 비트(bit)와 이진수(binary number)

by stella_gu 2022. 7. 22.

"세상에는 오직 10가지 사람들이 존재한다. 이진수를 이해하는 사람들과 그렇지 않은 사람들."

→ 책에 나오는 걸 그대로 인용했는데 왜 10가지의 사람들이라 표현한 걸까..?

 

→ 들어가기 전에, 디지털 시스템은 데이터를 십진수가 아닌 이진수로 표현한다. 왜?

물리적 장치를 만들 때 두 가지 상태만 갖도록 하는 것이 열 가지 상태를 갖도록 하는 것보다 훨씬 쉬워, 10진수를 사용할 때보다 방대한 양의 데이터를 더 빨리 처리할 수 있기 때문.

 

 

 

▶ 비트(bit) : 이진 숫자(binary digit)

효승님의 발표자료에서 발췌 (감사합니다ㅎㅎ)

  • 디지털 정보를 표현하는 가장 기본적인 방식이자, 컴퓨터가 처리할 수 있는 가장 작은 정보의 단위
  • '0과 1' 두 가지 값만 가진다.
    • 두 개 값 중 하나를 선택하는 정보라면 무엇이든 비트 한 개로 인코딩하거나 표현 가능.
    • 여기서 무엇에 0과 1을 할당 할지는 합의를 통해 정하면 됨.
    • 켜짐 / 꺼짐
    • 참 / 거짓
    • 예 / 아니오
    • 높음 / 낮음
    • 위 / 아래

 

→ 그렇다면 더 많은 선택지는 표시하지 못하는 건가?

 

당연히 그럴리 없다. 이미 컴퓨터에는 복잡한 정보들이 넘쳐나지 않는가

 

그럼 어떻게? 비트를 여러개 사용하면 된다!

  • 1 bit는 '0과 1' 두 개의 값을 가지므로 비트가 N개씩 늘어날 때마다 값의 개수는 2eN씩 늘어난다.
  • 1 비트에는 2개의 값을, 2비트에는 4개의 값을······ 저장할 수 있다.

 

 

 

참고) 2의 제곱과 10의 제곱

  • 2의 거듭제곱 중 일부는 10의 거듭제곱에 가까운 값이고 규칙적이라, 2와 10의 거듭제곱을 연관지어 기억하면 비트와 관련된 큰 수를 암산하기에 좋다.
  • 근데 이걸 암산할 일이 있을까....?

 

 

 

 그렇다면 이진수로 대체 어떻게 표현되는 건데?

※ 아래는 예시일 뿐, 실제 메모리에 할당되는 과정은 아주 복잡.

(isMothol이라는 boolean 자료형을 할당할 때)

→  boolean 자료형인 True와 False는 각각 0과 1에 하나씩 대응 가능하므로 한 칸의 비트(1 bit)로 표현 가능.

→ 예) True = 0, False = 1

 

(myHand라는 3가지 가짓수를 가진 자료형을 할당할 때)

→ '가위, 바위, 보'의 3가지 가짓수를  가진 자료형의 경우, 2e1보다는 많고 2e2보다는 적으므로 두 칸의 비트(2 bit)로 표현 가능.

→ 예) 가위 = 00, 바위 = 01, 보 = 10

 

('월~일' 7가지 가짓수를 가진 요일 자료형을 할당할 때)

→ '월~일'의 7가지 가짓수를 가진 자료형의 경우, 2e2보다는 많고 2e3보다는 적으므로 세 칸의 비트(3 bit)로 표현 가능.

→ 예) 월 = 000, 화 = 001, 수 = 010, 목 = 011, 금 = 100, 토 = 101, 일 = 110

 

 

 

 

 

▶ 그렇다면 이진수를 왜 알아햐 하는 걸까? (+ 자료형)

→ 한정된 메모리(RAM) 안에서 용량을 초과하지 않고 많은 작업을 수행하기 위해선, 작업 상 다뤄야 할 데이터의 종류에따라 적절히 메모리 공간을 할당해야 한다.

  • 변수를 선언할 때 데이터 종류(type)에 따라 메모리 크기가 할당 됨
  • java를 예로 들면, 4byte인 int로 충분히 담을 수 있는 수를 8byte인 long 변수에 담아두면 메모리 낭비임.
    • int age = 20 할 거를 long age = 20으로 하지 말라.

 

 

 

 

▶ 그렇다면 0과 1로 구동 되는 컴퓨터는 어떻게 우리가 작성한 코드를 이해할 수 있는 걸까?

컴퓨터는 0과 1만 알아 들을 수 있지만, 그렇다고 우리가 0과 1로만 코드를 작성하진 않는다. 

  • 컴파일 언어(java, ts 등)의 경우 컴파일 과정을 거쳐 컴퓨터가 읽을 수 있게 번역 되어 배포 되고,
  • 인터프리터 언어(js, python 등)는 배포 된 후 인터프리터를 통해 기계어로 바로바로 통역되어 실행 된다.

자세한 건 여기를 참고하자.

 

 

 

 

 

 

 

[참고] 1일 1로그 100일 완성 IT지식

 

1일 1로그 100일 완성 IT 지식

복잡한 IT 세상을 선명하게 읽는 디지털 문해력 기르기 챌린지. 컴퓨팅의 4가지 핵심 분야인 하드웨어, 소프트웨어, 통신, 데이터를 이해하면 어떤 복잡한 디지털 시스템이라도 잘게 쪼개 비즈니

www.aladin.co.kr

[참고] https://www.youtube.com/watch?v=50N_NiDUKpw 

[참고] https://www.youtube.com/watch?v=5IRFJt1C5o4