programing

이진 표기법에서 기수점 "." 뒤의 자릿수는 무엇을 의미합니까?

lastmoon 2023. 6. 11. 11:11
반응형

이진 표기법에서 기수점 "." 뒤의 자릿수는 무엇을 의미합니까?

기본 10 숫자에서 IEEE 754 플로트 표현으로 변환하는 방법에 대한 예제가 있습니다.

Number: 45.25 (base 10) = 101101.01 (base 2) Sign: 0
Normalized form N = 1.0110101 * 2^5
Exponent esp = 5  E = 5 + 127 = 132 (base 10) = 10000100 (base 2)
IEEE 754: 0 10000100 01101010000000000000000

한 구절을 제외하고는 이해가 됩니다.

45.25 (base 10) = 101101.01 (base 2)

45는 이진법으로 10101이고 괜찮습니다.하지만 그들은 어떻게 0.25를 0.01로 얻었을까요?

단순 장소 값.10번 베이스에는 다음과 같은 위치가 있습니다.

... 103 102 101 100 . 10-1 10-2 10-3 ...

수천, 수백, 십, 일. 십분의 일, 십분의 일, 십분의 일, 천분의 일...

마찬가지로 이진수(기본값 2)에는 다음이 있습니다.

... 23 22 21 20 . 2-1 2-2 2-3 ...

8, 4, 2, 1, 반, 25, 8...

그서위다음로으는 ▁the는 으로 두 번째..이진수는 2의-2 단위로, 1/4(또는 0.25)의 단위로 잘 알려져 있습니다.

다음과 같이 소수점 이후의 부품을 새 기준값(이 경우 새 기준값은 2)으로 반복 곱하여 다른 기준값으로 변환할 수 있습니다.

0.25 * 2 = 0.5

-> 첫 번째 이진수는 0입니다(적분 부분, 즉 소수점 앞 부분을 취합니다).

소수점 뒤에 있는 부품으로 계속 곱하기:

0.5 * 2 = 1.0

-> 두 번째 이진수는 1입니다(다시, 적분 부분을 취합니다).

여기도 소수점 뒤의 부분이 이제 0이기 때문에 더 이상 곱할 것이 없기 때문에 멈추는 곳입니다.

따라서 분수 부분의 최종 이항 표현은 0.01입니다2.

편집:

또한 기본 10의 유한 분수 부분으로 시작할 때에도 이진 표현이 무한한 경우가 꽤 많다는 점에 주목할 필요가 있습니다.예: 0.2를10 2진수로 변환:

0.2 * 2 = 0.4   ->   0
0.4 * 2 = 0.8   ->   0
0.8 * 2 = 1.6   ->   1
0.6 * 2 = 1.2   ->   1
0.2 * 2 = ...

결국 0.001100110011..2

이 방법을 사용하면 이항 표현이 무한대로 끝나는 경우 매우 쉽게 볼 수 있습니다.

다른 기저의 "소수"(분수 비트)는 정수와 정확히 같은 방식으로 작동한다는 것을 고려할 때 놀라울 정도로 직관적이지 않습니다.

base 10
scinot 10e2  10e1  10e0 10e-1 10e-2 10e-3
weight 100.0 10.0   1.0  0.1   0.01  0.001
value  0     4      5     .2      5      0

base 2
scinot 2e6 2e5 2e4 2e3 2e2 2e1 2e0 2e-1 2e-2 2e-3
weight 64  32  16   8   4   2   1   .5   .25 .125
value   0   1   0   1   1   0   1   .0    1    0   

1을 더하고 32.45.25를 32.45.25를 뺀 입니다.
우리는 16보다 작은 13.25를 남겼기 때문에 이진수 0을 더합니다.
우리는 8보다 크고 같은 13.25를 남겼기 때문에 이진수 1을 더하고 8을 빼면 됩니다.
우리는 4보다 크고 같은 05.25를 남겼으므로 이진수 1을 더하고 4를 빼면 됩니다.
우리는 2보다 작은 01.25를 남겼기 때문에 이진수 0을 더합니다.
우리는 1보다 크고 같은 01.25를 남겼기 때문에 이진수 1을 더하고 1을 빼면 됩니다.
정수가 있으면 0이 남으니까 그만둡니다.그러나:
0.5보다 작은 00.25가 남아 있으므로 이진수 0을 추가합니다.
0.25보다 크고 0.25와 같은 00.25가 남아 있으므로 이진수 1을 더하고 0.25를 빼면 됩니다.
이제 0이 있으므로 중지합니다(또는 원하지 않으면 계속해서 0을 계산할 수 있습니다).

소수점 이하의 모든 "쉬운" 숫자가 항상 제로 정지점에 도달하는 것은 아닙니다. 0.1(소수점 이하)은 기본 2로 변환되고 무한 반복됩니다. 0.00011001100110011001100110011...그러나 이진법의 모든 "쉬운" 숫자는 항상 기본 10으로 변환됩니다.

기초가 -1과 1 사이일 수 없다는 점을 제외하고는 분수(2.5), 비합리(pi) 또는 가상(2i) 기저에서도 동일한 공정을 수행할 수 있습니다.

2.00010 = 2+1 = 10.0002
1.00010 = 2+0 = 01.0002
0.50010 = 2-1 = 00.1002
0.25010 = 2-2 = 00.0102
0.12510 = 2-3 = 00.0012

분수 기준 2는 .1 = 1/2, .01 = 1/4입니다. ...

이렇게 생각하세요.

(점) 2^-12^-2 2^-3 등

그렇게

0/2 + 1/4 + 0/8 + 0/16 등

http://floating-point-gui.de/formats/binary/ 을 참조하십시오.

0.25를 1/4로 생각하면 됩니다.

2로 나누면 소수점이 한 단계 왼쪽으로 이동하고, 10으로 나누면 10으로 나누면 소수점이 한 단계 왼쪽으로 이동합니다.일반적으로 M을 기준으로 나누면 소수점이 한 단계 왼쪽으로 이동합니다.

그렇게

base 10                  base 2
--------------------------------------
1                      =>      1
1/2 = 0.5              =>    0.1
0.5/2 = 1/4 = 0.25     =>   0.01 
0.25/2 = 1/8 = 0.125   =>  0.001
.
.
.

기타.

언급URL : https://stackoverflow.com/questions/15282791/in-binary-notation-what-is-the-meaning-of-the-digits-after-the-radix-point

반응형