[컴퓨터 구조/운영체제] 컴퓨터의 정보 단위와 이진법

myungji·2024년 4월 17일

이 글은 한빛미디어 출판사의 '혼자 공부하는 컴퓨터 구조+운영체제(강민철 저)'를 정리한 내용입니다.

1. 컴퓨터가 표현하는 정보 단위

1-1. 비트

컴퓨터는 0 또는 1밖에 이해하지 못한다.
-> 0과 1을 나타내는 가장 작은 정보 단위 '비트'

  • 1비트는 0 또는 1 두 가지 정보를 표현할 수 있다.
  • n비트는 2의 n제곱 가지의 정보를 표현할 수 있다.

1-2. 바이트

여덟 개의 비트를 묶은 단위로 비트보다 한 단계 큰 단위이다.

  • 1바이트는 8비트이니, 2의 8제곱(256)개의 정보를 표현할 수 있다

바이트는 아래와 같이 더 큰 단위로 묶을 수 있다.

1byte == 8bit // true
1KB == 1,000byte // true
1MB == 1,000KB // true
1GB == 1,000MB // true
1TB == 1,000GB // true

1-3. 워드(word)

CPU가 한 번에 처리할 수 있는 데이터 크기
ex) 1워드가 16비트라면 CPU가 한 번에 16비트를 처리할 수 있는 것이고,
1워드가 32비트라면 CPU가 한 번에 32비트를 처리할 수 있는 것.

  • 하프 워드(half word): 워드의 절반 크기
  • 풀 워드(full word): 워드의 1배 크기
  • 더블 워드(double word): 워드의 2배 크기
  • 현대 컴퓨터의 워드 크기는 대부분 32비트 또는 64비트
    ex) 인텔의 x86 CPU는 32비트 워드 CPU,
    인텔의 x64 CPU는 64비트 워드 CPU

2. 이진법

0과 1만으로 모든 숫자를 표현하는 방법

  • 숫자가 1을 넘어가는 시점에 자리 올림을 한다
  • 십진법은 9를 넘어가는 시점에 자리 올림을 하는 것

2-1. 이진수

십진수 1 -> 이진수    1
십진수 2 -> 이진수   10
십진수 3 -> 이진수   11
십진수 4 -> 이진수  100
십진수 5 -> 이진수  101
십진수 6 -> 이진수  110
십진수 7 -> 이진수  111
십진수 8 -> 이진수 1000
십진수 9 -> 이진수 1001
        .
        .
        .

2-2. 이진수 표기

'10'이라는 숫자는 십진수 10일까 이진수 2일까? 이런 혼동을 방지하기 위해
이진수는 아래 첨자로 '10(2)'라고 표기하거나 '0b10'처럼 숫자 앞에 '0b'를 붙여 표기한다.

2-3. 이진수의 음수 표현

0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 '2의 보수'로 표현하는 방법이다.

  • 2의 보수: 어떤 수를 그보다 큰 2의 n제곱에서 뺀 값
  • 그러나 실제로는 이진수의 모든 0과 1을 뒤집고, 거기에 1을 더한 값으로 생각하면 된다
    ex) 0b11의 모든 0과 1을 뒤집으면 0b00이고, 여기에 1을 더하면 0b01이다.
    즉, 0b11의 2의 보수는 0b01이다.
  • 2의 보수로 표현된 값의 원본을 알고싶다면 한 번 더 2의 보수를 구하면 된다.
    ex) 0b11의 2의 보수인 0b01에서 한 번 더 2의 보수를 구하면 0b10 -> 0b11로 원본값을 알 수 있다.

2-4. 이진수의 음수와 양수를 구별하는 방법

0b11만 보고는 음수인지 양수인지 구별하기 어렵다. 따라서 컴퓨터 내부에서는 이를 구별하기 위해 '플래그(flag)'를 사용한다.

  • 컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용
  • 컴퓨터 내부에서 숫자들은 '양수' 혹은 '음수'가 적힌 표시를 들고 다니므로 컴퓨터가 부호를 헷갈릴 일은 없다

2-5. 2의 보수 표현의 한계

  • 2의 보수 방법은 음수를 널리 사용되는 음수 표현 방식이지만 완벽한 방식은 아니다
  • 0이나 2의 n제곱 형태의 이진수에 2의 보수를 취하면 원하는 값을 얻을 수 없다
    ex1) 0b0000에 2의 보수를 취하면 0b0000 -> 0b1111 -> 0b10000 -> 0b0000(자리 올림 발생한 비트를 버림)
    다시 자기 자신이 되는 상황이 생긴다.
    ex2) 0b1000에 2의 보수를 취하면 0b0111 -> 0b1000 다시 자기 자신이 된다.

출처 - '혼자 공부하는 컴퓨터 구조+운영체제(강민철 저, 한빛미디어)'

profile
iOS 초보바리

0개의 댓글