Home

읽기 설정

컴퓨터는 데이터를 이진수로 표현하기 때문에, 컴퓨터가 다루고 싶어하는 모든 숫자는 0과 1의 나열로 저장되어야 합니다.00:00

음이 아닌 정수 값의 경우, 해석은 우리가 십진수로 숫자를 표현하는 방식과 매우 유사합니다.00:10

각 비트, 즉 각 0이나 1은 2의 다른 거듭제곱을 나타냅니다. 1, 2, 4, 8, 16, 이런 식으로 나타내는 비트가 있습니다.00:16

각 비트의 자릿값을 모두 더하면 표현되는 숫자가 됩니다. 하지만 컴퓨터는 종종 정수가 아닌 숫자를 표현해야 합니다.00:28

즉, 소수 부분이 있는 숫자들을 말하는 거죠. 요즘 대부분의 컴퓨터는 이러한 숫자들을 표현하는 일반적이고 표준화된 방식을 따르지만, 예전에는 그러지 않았습니다.00:39

숫자의 소수 부분을 표현하는 방법은 여러 가지가 있었을 수 있습니다. 한 가지 옵션은 숫자의 소수 부분에 고정된 자릿수를 저장하는 고정 소수점 표현 방식이라고 알려져 있습니다.00:51

십진법으로 예를 들어보자면, 소수점 앞에 네 자리 숫자, 소수점 뒤에 네 자리 숫자를 저장해서 표현할 수 있습니다.01:04

이진법으로도 똑같은 일을 할 수 있습니다. 정수 부분에 4비트를, 소수 부분에도 4비트를 저장할 수 있습니다.01:12

음수 값은 일단 제외하고, 정수 비트는 1, 2, 4, 8을 나타내고, 분수 비트는 반, 분의 1, 분의 1, 8, 분의 1, 16을 나타냅니다.01:20

이런 표현 방식을 사용하면 1과 반이나 4.75 같은 숫자는 쉽게 표현할 수 있죠. 그런데 2.8처럼 어떤 숫자는 이 비트들로 정확하게 표현할 수 없어요.01:34

이 네 개의 분수 조합으로는 0.8과 정확히 일치하는 것이 없기 때문에, 컴퓨터가 할 수 있는 최선은 2.8에 최대한 가깝게 근사하는 표현을 사용하는 것 뿐입니다. 하지만 완벽하게 정확하지는 않겠죠.01:49

어떤 방식으로 실수(real number)를 표현하든 문제가 발생합니다. 왜냐하면 실수는 무한히 많지만, 표현하는 데 사용할 수 있는 비트 수는 유한하고 고정되어 있기 때문입니다.02:04

이러한 고정 소수점 방식은 숫자를 표현하는 방식인데, 표현할 수 있는 숫자의 크기가 더 이상 커질 수 없다는 문제가 발생할 수 있습니다.02:16

정수 자리에 모든 비트를 할당했을 때는 훨씬 더 큰 숫자를 표현할 수 있지만, 소수 자리에 일부 비트를 할당하면 그 표현 범위가 줄어듭니다.02:26

이 문제를 해결하는 방법, 그리고 현대 컴퓨터가 표준화한 방법은 바로 부동소수점 숫자입니다. 정수 부분과 소수 부분을 따로 저장하는 대신, 부동소수점 숫자는 가수(mantissa)와 지수(exponent)를 가지고 있습니다.02:37

십진법에서 과학적 표기법을 사용한 이 접근 방식이 익숙할 수도 있습니다. 예를 들어, 128은 1.28 곱하기 10의 2제곱으로 표현할 수 있습니다.02:52

0.0042는 4.2 곱하기 10의 음3승으로 나타낼 수 있습니다.03:04

각각의 표현에는 지수가 있고, 그리고 지수를 거듭제곱하여 곱해지는 1보다 크거나 같지만 10보다 작은, 즉 유효 자릿수라고도 불리는 가수 부분이 있습니다.03:14

이진법에서는 우리도 거의 같은 방식으로 할 수 있습니다. 지표는 항상 1.0대(일쩜공대)의 형태를 갖습니다. 왜냐하면 최소 1 이상이면서 2보다 작아야 하기 때문입니다. 지수는 정수 형태로 이진법으로도 나타낼 수 있습니다.03:28

숫자를 해석하려면 지수 값으로 2를 거듭제곱한 값으로 가수(mantissa)를 곱합니다.03:43

여기서 중요한 점은, 가수(mantissa) 부분과 지수(exponent) 부분에 할당된 비트 수가 고정되어 있기 때문에, 고정 소수점 표현 방식보다 훨씬 넓은 범위의 숫자를 부동 소수점 표현 방식으로 나타낼 수 있다는 것입니다.03:50

그 장점이 그냥 주어지는 건 아니에요. 숫자가 극단적으로 커질수록 소수 부분의 정밀도가 떨어지는 단점이 있지만, 보통은 괜찮은 절충안이라고 할 수 있죠. 그럼 컴퓨터는 실제로 부동소수점수를 어떻게 저장하는 걸까요?04:06

이 형식은 전기 전자 공학자 협회, IEEE에서 표준화되었습니다.04:21

IEEE 754 표준에서 부동소수점 숫자를 표현하는 다양한 형식이 제공되는데, 그중 가장 흔하게 사용되는 두 가지는 단정밀도와 이중정밀도입니다.04:27

단정도 형식은 숫자를 표현하는 데 32비트를 사용하고, 배정도 형식은 64비트를 사용하여 더 넓은 범위의 값을 더 정확하게 표현할 수 있습니다. 먼저 단정도 숫자부터 살펴보겠습니다.04:40

32비트는 숫자의 사인 값을 나타내는 1비트로 시작합니다. 0은 양수를 의미하고, 1은 음수를 의미합니다.04:55

그 다음 지수는 8비트, 그리고 가수(mantissa)는 23비트로 구성됩니다.05:03

지수(exponent)를 좀 더 자세히 살펴보겠습니다. 그 값은 8비트로 저장되며, 0부터 255까지의 숫자를 표현할 수 있습니다.05:09

하지만 양수 지수뿐만 아니라 음수 지수도 표현해야 합니다. 그래서 음수 지수도 표현할 수 있도록 이 값의 범위 전체를 조정해야 합니다.05:19

어떻게 그렇게 할까요? 음, 이 범위의 중간에 있는 숫자, 127을 0 지수로 표현하는 겁니다. 127보다 큰 숫자는 양의 지수를 나타냅니다.05:32

127보다 작은 숫자는 음수 지수를 나타냅니다. 그래서 우리가 저장한 지수 값을 127에서 빼면, 실제 사용해야 할 지수를 알 수 있습니다. 양수든 음수든요.05:46

자, 이제 지수부(mantissa)에 대해 알아봅시다. 지수부의 각 비트는 1, 1/2, 1/4, 1/8과 같이 어떤 분수 자릿수를 나타냅니다.06:01

그렇게 하면 1 이상 2 미만의 값을 표현할 수 있습니다.06:11

그런데 이 모든 숫자가 1로 시작하기 때문에, 1을 실제로 저장할 필요가 없습니다. 초기에 1이 있다는 것을 가정하고, 1 뒤의 소수점 자릿수만 저장하면 됩니다.06:16

즉, 지수부를 저장하는 데 23비트를 사용하더라도, 실제로는 24비트의 정밀도로 지수부를 표현할 수 있다는 의미입니다.06:29

그리고 이게 핵심 아이디어입니다. 이제 만약 우리가 부동소수점 표현으로 숫자를 가지고 있다면, 가수(mantissa)에 초기 1을 더해서 그 숫자가 무엇을 나타내는지 알아낼 수 있습니다.06:38

그럼 지수를 취하고, 127을 빼서 실제 지수가 얼마인지 알아낼 수 있습니다.06:50

그 다음 지수를 2 거듭제곱한 값에 마티사를 곱하고, 사인 비트를 사용하여 결과가 양수인지 음수인지 결정합니다.06:57

표준의 몇 가지 추가적인 부분들이 언급할 만합니다. 한 가지 알아차렸을 수도 있는 점은, 만약 지수부가 항상 1과 2 사이에 있다면, 0을 나타낼 방법이 좋지 않다는 것입니다.07:07

표현하고 싶을 만한 다른 값들이 있을 수도 있습니다. 예를 들어, 계산 결과가 너무 커져서 무한대를 표현하고 싶을 수도 있죠.07:18

0으로 나누거나 음수의 제곱근을 구하는 것처럼 잘못된 값을 표현할 수도 있습니다. 우리가 설명해 온 부동소수점 형식으로는 아직 그걸 처리할 수 없습니다.07:27

그렇기 위해 다시 지수로 돌아가 보겠습니다. 기억하세요, 8비트를 이용해서 나타내고, 127을 빼고 있습니다.07:39

0부터 255까지의 값이 -127부터 128까지의 실제 지수를 나타내도록 합니다.07:47

IEEE 표준에서는 0과 255라는 극단적인 두 값을 특별한 의미를 가진 것으로 특수하게 정의합니다.07:57

그래서, 일반적인 부동 소수점 값은 실제 지수가 -126과 127 사이에만 표현할 수 있습니다. 그럼 이 극단적인 지수들은 어떻게 처리하나요?08:07

지수가 0이고 가수도 0이면, 그건 0이라는 숫자를 나타냅니다.08:20

지수가 최대값 255이고 가수부가 0이면, 사인 비트에 따라 무한대 또는 음의 무한대를 나타냅니다.08:26

지수가 0이고 가수부가 0이 아닌 경우, 소정밀수(subnormal numbers)라고 불리는 숫자를 표현하는 데 사용될 수 있습니다. 이 소정밀수들은 0에 매우 가깝지만, 일반적인 가수부와 지수 형식으로는 표현할 수 없는 숫자들을 의미합니다.08:37

지수가 최대 255이고 소수부가 0이 아닌 경우, 이는 숫자가 아니라는 것을 의미합니다.08:52

배정밀도 부동소수점 수, 흔히 '더블'이라고 불리는 형식은 매우 유사합니다.09:01

단지 지수와 가수에 사용할 수 있는 비트 수를 늘린 것뿐이에요. 가수는 23비트에서 52비트로, 지수는 8비트에서 11비트로 바뀌었죠. 지수에 더 많은 비트가 할당되면 훨씬 더 크고 훨씬 더 많은…09:07

작은 숫자와 더 많은 비트를 가수 부분에 사용하면, 해당 숫자들을 더욱 정확하게 표현할 수 있습니다. 그래서 컴퓨터는 부동 소수점 숫자를 이렇게 저장합니다. 숫자가 양수인지 음수인지 결정하는 부호 비트, 숫자가 얼마나 크거나 작은지 알려주는 지수가 있습니다.09:27

숫자는 기수와 함께 특정 정밀도까지 숫자의 값을 지정할 수 있게 해주는 유효 자릿수를 갖습니다.09:45

AI Summary

이 영상은 컴퓨터가 실수를 표현하는 방식에 대한 깊이 있는 설명을 제공해. 초기에는 고정 소수점 방식을 사용했지만, 표현 범위와 정확도의 한계를 극복하기 위해 부동 소수점 표현 방식이 도입되었어. 부동 소수점 방식은 과학적 표기법과 유사하게 가수와 지수를 활용하며, IEEE 754 표준에 따라 단정밀도(32비트)와 배정밀도(64비트)로 구현돼. 이러한 방식은 넓은 범위를 표현할 수 있지만, 소수점 정밀도 문제가 있을 수 있다는 점도 짚어주고 있어.

Key Highlights

  • 컴퓨터는 이진수로 데이터를 표현하며, 모든 숫자는 0과 1의 조합으로 저장돼.
  • 초기에는 고정 소수점 방식이 사용되었지만, 표현 범위와 정확도에 제약이 있었어.
  • 부동 소수점 표현 방식은 과학적 표기법과 유사하며, 가수와 지수를 사용하여 표현 범위를 넓혔어.
  • IEEE 754 표준은 컴퓨터 실수 표현을 정의하며, 단정밀도와 배정밀도를 제공해.
  • 부동 소수점은 넓은 범위를 지원하지만, 소수점 정밀도가 떨어질 수 있다는 단점이 있어.

Related Videos