수론(number theory)에서의 실수

실수

  • 실수는 유리수와 무리수의 합집합이다.

유리수 (rational number)

  • 유리수란, 분모가 0이 아닌 정수 분수로 나타낼 수 있는 수를 말한다.
  • rational number의 어간인 ‘ratio’가 비율이라는 뜻이다.
  • 정수 역시 분수로 나타낼 수 있으므로 유리수에 속한다.
  • 정수가 아닌 유리수로는 유한소수와 순환소수(순환하는 무한소수)가 있다.

무리수 (irational number

  • 무리수란, 유리수가 아닌 수를 뜻한다.
  • 이에 따라, 무리수는 분수나 비율로 나타낼 수 없는 수를 뜻한다.
  • 무리수로는 무한소수(비순환 무한소수)가 있다.

컴퓨터에서의 실수 표현 방법

부동소수점 방식

다음과 같은 수는 다음처럼 십진법의 전개식(십진전개식)으로 표현할 수 있다:

  • 1234000000000 = 1.234 * 10^12
  • -0.0000000005678 = -5.678 * 10^(-10)

이와 같은 표기법은 다음과 같이 요약할 수 있다:

(-1)^S * M * B^E
항목명 예 1 예 2
부호 S 0 1
가수 M 1.234 5.678
밑 B 10 10
지수 E 12 -10


특히, 컴퓨터에서 메모리는 제한되어 있기 때문에 컴퓨터에서 실수는 다음처럼 표현된다:

항목명 부호 (S) 지수 (E) 가수 (M)
크기 (Bit) 1 m n


여기서 지수부(m)와 가수부(n)를 몇 비트씩 쓸지는 시스템이 결정한다.
컴퓨터가 지수부와 가수부를 각각 어떻게 표기하는지에 대해 이해하기 위해서는 지수부에 대해서는 초과 표기법(excess notation)을, 가수부에 대해서는 정규화(normalization)를 이해해야 한다.

초과 표기법 (excess notation)

  • 부동소수점 방식에서 지수 부분만을 표현하기 위한 방법.
  • 값을 저장하는 경우, 우선 m 비트가 주어졌을 때 2^(m-1) 또는 2^(m-1) - 1을 매직 넘버(magic number)로 취한 뒤,
(-1)^S * M * B^E
  • 이를 위의 공식의 지수 E에 더해준다. 즉, 지수부에는 E + 2^(m-1) 또는 E + 2^(m-1) - 1가 할당되게 된다.
  • 반대로 이 값을 해석할 경우에는, 앞서 매직 넘버를 더해줬으니 이번에는 빼주면 원래의 값이 나온다. 즉, 지수부의 값을 F라고 할 때 F - 2^(m-1) 또는 F - 2^(m-1) - 1를 해주게 되면 원래의 E 값이 나온다.

정규화 (normalization)

가수를 표현할 때는 표준화된 형식이 필요하다.

예컨대, 아래의 이진수들은 모두 동일한 값이다:

-1010.00110011 * 2^3 -10.1000110011 * 2^5 -101000110.011 * 2^(-2) -0.0101000110011 * 2^8

이 경우, 소수점 왼쪽에 1이 하나만 오도록 약속하게 되면 가수부를 고정시킬 수 있다.

실수 표현의 예

컴퓨터 상에서 43.6875를 실수로 표현한다고 하자.

  • 지수부는 8 비트, 가수부는 15 비트라고 가정하자 (MSB이자 부호 비트는 당연히 1 비트이다).
  • 우선 43.6875를 이진수로 진법 변환한다.
  • 101011.10111
  • 위의 값을 정규화한다. 즉, 소수점 자리를 왼쪽으로 5칸 이동시킨다.
  • 1.010111011 * 2^5
  • 여기서 매직 넘버 127을 취했을 때, 지수에 해당하는 5에 127을 더한 뒤 지수부에 할당한다.
  • 위에서 정규화한 값인 1.010111011에서 소수점 아래 자리만을 가수부로 취한다.
  • 이는 정규화를 통해 소수점 왼쪽 자리에는 반드시 1이 하나만 오도록 약속되어 있기 때문에 이 부분을 굳이 저장할 필요가 없기 때문이다. 생략한 부분은 값을 해석할 때 덧붙이게 되어있다.
  • 할당된 가수부의 나머지 비트들은 비워둔다.

따라서, 43.6875의 최종적인 실수 표현 결과는 다음과 같다:

항목명 부호 (S, 1 bit) 지수 (E, 8 bits) 가수 (M, 15 bits)
값 (Value) 0 10000100 010111011000000


IEEE 부동소수점 방식의 표준 형식

앞에서 “지수부(m)와 가수부(n)를 몇 비트씩 쓸지는 시스템이 결정한다”고 말한 바 있다. 이에 IEEE는 부동소수점 방식에 대한 표준 형식을 다음과 같이 제시하고 있다:

단정도 (single precision); 4 바이트

항목명 부호 (S, 초과-127) 지수 (E) 가수 (M)
크기 (Bit) 1 8 23


배정도 (double precision); 8 바이트

항목명 부호 (S, 초과-1023) 지수 (E) 가수 (M)
크기 (Bit) 1 11 52



<끝>