부동 소수 점수 란 무엇입니까? 예제와 함께 간단히 설명
이 실용적인 팁에서는 부동 소수점 숫자가 무엇이며 고정 소수점 숫자와 다른 점을 보여줍니다.
부동 소수 점수 란 무엇입니까?
컴퓨터 과학에서 부동 소수점 숫자는 종종 특정 정확도로 작동하는 장치를 측정하는 데 사용됩니다.
- 부동 소수점 숫자 (또는 "부동 소수점 숫자")는 지수 표기법을 사용하는 숫자를 나타냅니다. 예외적 인 경우에는 대략적으로 만 작동합니다. 1230000을 숫자 1.23 ⋅ 10⁶으로 나타낼 수도 있습니다.
- 1.23을 "Mantissa"라고합니다. 10은 "base"이고 6은 "exponent"입니다. 또한, 가수에 기호를 추가 할 수도 있습니다. 그러나 모든 것을 이중 시스템에 적용 할 수도 있습니다. 숫자 10101100을 숫자 1.0101100 ⋅ 2⁷와 함께 나타낼 수도 있습니다. 컴퓨터는 부호, 가수 및 지수 만 저장합니다.
- 컴퓨터는 보통 쉼표 앞에 1이있을 때까지 쉼표를 앞뒤로 이동합니다. 그런 다음 PC는 가수와 지수의 소수점 이하 자릿수 만 저장하면됩니다.
- 지수를 양수로 저장할 수 있도록 고정 번호, 소위 바이어스가 추가됩니다. 소수점 (-바이어스) 이전의 가능한 최소 지수는 0으로 저장됩니다.
- 고정 소수점 숫자와 달리 쉼표는 부동 소수점 숫자에서 고정 소수점이 아닙니다.
Half, Float & Double-부동 소수점 숫자의 공통 코딩
특히 Arduino로 프로그래밍 할 때이 세 용어를 우연히 발견했습니다. 이것들은 표준화 된 표현입니다.
- 데이터 유형 "half"는 16 비트 숫자입니다. 가장 왼쪽 비트는 부호를 담당합니다. 지수는 5 비트와 가수 10을 갖습니다. 사용되는 바이어스는 15입니다. 가수의 첫 번째 비트는 (거의) 항상 1이므로 저장되지 않습니다.
- "float"(또는 "single") 데이터 형식은 32 비트 숫자입니다. 여기에도 부호에 비트가 사용됩니다. 그러나 지수에는 8 비트 (바이어스 = 127)와 가수 23이 있습니다.
- "double"데이터 형식도 부호에 비트를 사용합니다. 그러나 지수는 11 비트 (바이어 = 1023)이며 가수는 52 비트입니다. 전체적으로 64 비트, 즉 8 바이트입니다.
- 이 세 가지 공통 데이터 유형 외에도 더 많은 데이터 유형이 있습니다. 그러나 half, float 및 double의 정확도가 이미 충분하기 때문에 이들은 주로 사용되지 않습니다.
십진수를 부동 소수점 숫자로 변환-작동 방식
마지막으로, 일반적인 십진수를 부동 소수점 숫자로 변환하는 방법을 보여 드리고자합니다.
- 이 예에서는 10 진수 18.4를 사용합니다. 소수점 앞의 숫자가 먼저 이중 시스템으로 전송됩니다. 결과적으로 (10010) get를 얻습니다.
- 그런 다음 0.4를 변환해야합니다. 먼저 0.4에 2를 곱합니다. 결과적으로 0.8이됩니다. 쉼표 앞에 숫자를 기록하십시오. 이 경우에는 0입니다. 그런 다음 0.8에 2를 곱하십시오. 이번에는 1.6을 얻습니다. 1을 기록하고 0.6으로 계속 계산하십시오. 잠시 후 패턴이 반복되는 것을 볼 수 있습니다 (이 예에서는). 마지막으로 모든 숫자를 위에서 아래로 기록하십시오 : 011001100110 ...
- 그런 다음 숫자를 함께 추가하십시오. 또한 10010.01100110 ... ⋅ 2⁰를 얻도록 (⋅ 2⁰)를 추가하십시오. 그런 다음 소수점 앞에 1이 1이 될 때까지 쉼표를 이동하고 적절하게 전원을 변경하십시오. 결과적으로 소수점 4 자리를 왼쪽으로 이동 했으므로 1.001001100110 ... ⋅ 2⁴를 얻게됩니다. 이 단계를 "정규화"라고도합니다.
- 이 예에서는 데이터 유형 "float"를 사용합니다. 따라서 지수에 적절한 치우침 값을 추가하십시오. 또한 계산 결과 4 + 127 = 131을 이진수로 변환해야합니다. 숫자 131은 이중 시스템에서 숫자 10000011입니다.
- 이제 완성 된 부동 소수점 숫자를 기록 할 수 있습니다. 먼저 부호의 비트를 씁니다. 양수이므로 첫 번째 비트는 0입니다. 그런 다음 131을 써야합니다. 이 수에는 8 비트가 필요하고 8 비트는 부동 소수점에 사용할 수 있기 때문에 모든 것이이 경우에 완벽하게 맞습니다. 마지막으로 가수에 23 비트를 사용할 수 있으므로 가수의 처음 23 비트를 기록해야합니다.
- 따라서 완성 된 부동 소수점 숫자는 01000001100100110011001100110011이어야합니다. 조금 더 명확한 숫자는 0 | 10000011 | 00100110011001100110011입니다.
부동 소수점 숫자를 10 진수로 변환-방법은 다음과 같습니다
마지막으로 부동 소수점 숫자를 다시 10 진수로 변환하는 방법을 보여 드리고자합니다. 이를 위해 우리는 숫자 1000001100100110011001100110011을 사용합니다.
- 먼저 16, 32 또는 64 비트 숫자를 얻을 때까지 숫자 (정면)를 0으로 채 웁니다. 이 경우 01000001100100110011001100110011입니다.
- 첫 번째 숫자는 부호를 나타냅니다. 그래서 우리의 숫자는 양수입니다.
- 그런 다음 다음 (이 경우) 8 자리를 쓰고 바이어스를 뺍니다. (10000011) ₂ = 131 → 131-127 = 4 → 그래서 뒤에 "⋅ 2⁴"가 있습니다.
- 1.00100110011001100110011 ⋅ 2⁴에 "1"을 입력 한 다음 나머지 모든 숫자와 "⋅ 2⁴"를 쓰십시오.
- 그런 다음 쉼표를 4 자리 오른쪽으로 이동하여 "⋅ 2⁴"를 생략하십시오. 10010.0110011001100110011
- 다음으로 평소와 같이 10010을 정수로 변환하십시오. 18을 얻습니다.
- 이제 소수점 이하 자릿수를 변환해야합니다. 쉼표 뒤의 첫 번째 숫자는 1 : 2¹, 두 번째 숫자는 1 : 2² 등입니다. 값을 추가하면 쉼표 앞의 숫자에 18.3999996185302734375가 표시됩니다.
다음 실용적인 팁에서는 ASCII 문자를 이진수로 변환하는 방법을 보여줍니다.