비트(bit)란?

2024. 5. 1. 15:33CS

1. 비트(bit)

 문자 언어는 다음과 같은 세 가지 구성요소로 이루어져 있습니다.

  • 기호가 들어갈 상자
  • 상자에 들어갈 기호
  • 상자의 순서

그림1. 문자 언어의 틀

 

 이러한 구성을 통해 문자 언어의 기본 틀을 이해할 수 있습니다. 각 상자에 어떤 기호가 어떤 순서로 들어가느냐에 따라 완전히 다른 뜻이 형성된다는 점을 확인할 수 있습니다. 이와 같이, 우리가 일상 생활에서 사용하는 자연어에서는 이러한 '상자'를 문자(character)라고 부릅니다.

 

 컴퓨터 언어에서는 '상자'를 비트(Bit)라고 부릅니다. 비트는 2진법을 사용한다는 뜻의 바이너리(ㅠinary)와 숫자를 뜻하는 디지트(digit)의 합성어로, 컴퓨터가 정보를 표현하고 처리하는 가장 기본적인 단위입니다. 각 비트는 0 혹은 1, 두 가지 상태만을 가질 수 있으며, 이러한 비트들의 조합을 통해 컴퓨터는 복잡한 데이터와 명령어를 저장하고 처리할 수 있습니다.


2. 논리 연산(logic operation)

 비트를 활용하면 "점심을 먹었는가?", "과제를 끝냈는가?"와 같이 예 혹은 아니오로 대답할 수 있는 질문에 응답할 수 있습니다. 이 때 '예'를 참(true), '아니오'를 거짓(false)이라는 용어로 부릅니다. 하지만 "어떤 과제를 하고 있나?"와 같은 질문은 예/아니오로 대답할 수 없기 때문에 한 비트만으로 답하기가 불가능합니다.

 

 우리가 일상생활에서 "예" 혹은 "아니오"로 답할 수 있는 문장을 엮은 경우를 심심치 않게 맞닥뜨립니다. "잠을 자고, 점심을 먹었다면 과제를 시작해라."라는 문장을 예로 들 수 있습니다. "잠을 잤는가?"가 참이고, "점심을 먹었는가?"가 참이라면 "과제를 시작한다"가 참일 것입니다. 이처럼 비트들로부터 새로운 비트를 만들어내는 동작을 논리 연산(logic operation)이라 합니다.

 

불리언 대수(Boolean algebra)

 영국의 수학자 조지 불(George Boole)이 만들어낸 불리언 대수는 비트에 사용할 수 있는 연산 규칙입니다. 일반 대수와 마찬가지로 결합 법칙, 교환 법칙, 분배 법칙을 불리언 대수에 적용할 수 있습니다.

 

 불리언 연산자는 NOT, AND, OR, XOR이 있습니다.

  • NOT (논리 부정): NOT 연산자는 단항 연산자로, 주어진 불리언 값의 반대 값을 반환합니다. 즉, 참이면 거짓을, 거짓이면 참을 반환합니다. 예를 들어, NOT True는 False가 됩니다. 
  • AND (논리곱): AND 연산자는 두 개 이상의 불리언 값이 모두 참일 때만 참을 반환합니다. 그 외의 경우에는 거짓을 반환합니다. 예를 들어, True AND True는 True이지만, True AND False는 False입니다.
  • OR (논리합): OR 연산자는 두 개 이상의 불리언 값 중 적어도 하나가 참이면 참을 반환합니다. 모두 거짓일 때만 거짓을 반환합니다. 예를 들어, True OR False는 True입니다.
  • XOR (배타적 논리합): XOR 연산자는 두 개의 불리언 값이 서로 다를 때 참을 반환합니다. 즉, 하나는 참이고 다른 하나는 거짓일 때 참을 반환합니다. 두 값이 같으면 거짓을 반환합니다. 예를 들어, True XOR False는 True이지만, True XOR True는 False입니다.

그림2. 불리언 연산의 진리표

 

위에 보이는 진리표를 통해 보다 쉽게 확인할 수 있습니다.

 

3. 정수의 비트 표현

 우리는 보통 10진수 체계를 사용합니다. 10진수 체계는 위에서 언급한 상자에 10가지 숫자를 담을 수 있습니다. 

그림3. 10진수 체계

 

  • 첫 번째 상자(맨 오른쪽)는 (10^0)을 나타냅니다.
  • 두 번째 상자는 (10^1)을 나타냅니다.
  • 세 번째 상자는 (10^2)을 나타냅니다.

 이런 식으로, 각 상자의 값은 그 위치에 따라 10의 거듭제곱으로 표현됩니다.

 

비트(bit)가 사용하는 2진수 체계는 이와 비슷하지만, 각 상자(또는 자릿수)의 밑이 2가 됩니다. 이 말은, 각 상자가 나타내는 값이 2의 거듭제곱이라는 뜻입니다.

그림4. 2진수 체계

  • 첫 번째 상자(맨 오른쪽)는 (2^0)을 나타냅니다.
  • 두 번째 상자는 (2^1)을 나타냅니다.
  • 세 번째 상자는 (2^2)을 나타냅니다.

 2진수 110라는 수는 1*2*2 + 1*2 + 0*1 로 계산할 수 있고, 10진수의 6과 같다는 것을 알 수 있습니다. 또한, 2진수의 가장 오른쪽의 비트를 가장 작은 유효 비트(least significant bit)라고 부르고, 가장 왼쪽의 비트는 가장 큰 유효비트(most significant bit)라고 부릅니다. 각각을 줄여서 LSB, MSB라고 부릅니다.

'CS' 카테고리의 다른 글

자바(JAVA) 컬렉션(Collection)  (1) 2024.04.19
[JAVA] Garbage Collection(가비지 컬렉션)  (1) 2024.04.13
메모리의 구조  (0) 2024.04.09
CPU 스케줄링  (0) 2024.04.04
프로세스(Process)와 스레드(Thread)  (0) 2024.04.01