Post

숫자 데이터의 표현

숫자 데이터의 표현

정보 단위

비트(bit)

  • 0과 1을 표현하는 가장 작은 정보 단위
  • n비트로 $2^n$개 정보 표현 가능
  • 비트를 묶은 단위는 아래와 같다.

    이전 단위를 1024개씩 묶은 단위는 kiB, MiB, GiB 등으로 불린다.

단위크기
1 바이트(byte)8 비트(bit)
1 킬로바이트(kB)1,000 바이트(byte)
1 메가바이트(MB)1,000 킬로바이트(kB)
1 기가바이트(GB)1,000 메가바이트(MB)
1 테라바이트(TB)1,000 기가바이트(GB)
 

워드(word)

  • CPU가 한 번에 처리할 수 있는 정보의 크기 단위

진법

진법의 종류

3진법, 60진법 등 다양한 진법이 있지만, 주로 사용되는 진법은 다음과 같다.

  • 2진법

    5를 $0101_{(2)}$로 표현 가능
    코드 상에서는 0b를 앞에 붙여 0b0101로 표현 가능

  • 8진법

    10을 $12_{(8)}$로 표현 가능
    코드 상에서는 0을 앞에 붙여 012로 표현 가능

  • 10진법
  • 16진법

    28을 $1c_{(16)}$로 표현 가능
    코드 상에서는 0x를 앞에 붙여 0x1c로 표현 가능


2진법의 음수 표현

1의 보수

  • 2진수에서 0은 1로, 1은 0으로 뒤바꾸는 방식
  • 비트 연산자 NOT(~)을 사용한 결과와 같다고 볼 수 있음

    -5를 1의 보수로 표현해보면 0101의 각 자리수를 뒤집어 1010로 표현할 수 있음

  • 0을 8비트로 표현했을 때 0000 0000, 1111 1111로 둘 다 표현 가능하기 때문에, 표현 가능한 범위는 -127 ~ 127 (255개)이다.
  • 연산시 자리 올림이 발생할 경우, 자리올림수를 더해줘야 한다.

    4 + (-2) = 0100 + 1101 = 10001 = 0001 + 1 = 0010 = 2
    4비트이기 때문에 앞자리 1을 버리면 0001이고 이때 자리올림수 1을 더해줘야 0010 즉, 2가 된다.

2의 보수

  • 실제 2진법의 음수 표현 방식으로 채택된 방법
  • 2진수에서 은 1로, 1은 0으로 뒤바꾼 뒤 1을 더하는 방식
  • 비트 연산자 NOT(~)을 사용한 뒤 1을 더한 결과와 같다고 볼 수 있음

    -5를 2의 보수로 표현해보면 0101의 각 자리수를 뒤집은 뒤 1을 더해 1011로 표현할 수 있음

  • 0을 8비트로 표현했을 때 0000 0000 하나 뿐이고, 1111 1111은 -1을 의미하기 때문에, 표현 가능한 범위는 -128 ~ 127 (256개)이다.

1의 보수 vs 2의 보수

  • 1의 보수는 0을 표현할 수 있는 방식이 두 개나 있기 때문에, 2의 보수보다 표현 가능한 수가 1개 적다.
  • 1의 보수는 자리 올림 발생시 자리올림수를 더해줘야 하기 때문에, 2의 보수보다 비효율적이고 unsigned를 표현하는 부분에서도 문제가 발생한다.
This post is licensed under CC BY 4.0 by the author.