부동 소수점 유형 (예 : 단일 및 이중)은 부호, 가수 및 지수로 메모리에 표시됩니다. 과학적 표기법으로 생각하십시오.
Sign*Mantissa*Base^Exponent
그들은 기대할 수 있듯이 base 2를 사용합니다. 무한대와 NaN을 나타낼 수있는 다른 조정이 있으며 지수는 상쇄되고 (다시 돌아올 것입니다) 가수의 단축 (다시 돌아올 것입니다) . 자세한 내용은 해당 표현 및 작동을 다루는 표준 IEEE 754를 찾으십시오.
우리의 목적을 위해 이진 숫자 "mantissa"와 소수점을 넣을 위치를 알려주는 "지수"라고 생각할 수 있습니다.
Single의 경우 부호 1 비트, 지수 8 비트, 가수 23 비트가 있습니다.
이제 가장 중요한 자리에서 가수를 저장합니다. 왼쪽의 모든 0은 관련이 없음을 기억하십시오. 그리고 우리가 이진수로 작업하고 있음을 알면, 가장 중요한 숫자는 1입니다. 글쎄, 우리는 그것을 알고 있기 때문에 그것을 저장할 필요가 없습니다. 그 속기 덕분에 가수의 유효 범위는 24 비트입니다.
※ : 저장하는 숫자가 0이 아닌 한. 이를 위해 모든 비트를 0으로 설정합니다. 그러나 우리가 내가 설명한 설명에 따라 해석하려고하면 2 ^ 24 (암시 적 1)에 1 (2의 지수 0의 거듭 제곱)을 곱한 것입니다. 따라서 그것을 고치려면 지수 0은 특별한 값입니다. 무한대와 NaN을 지수에 저장하는 특수 값도 있습니다.
특별한 값을 피하는 것 외에도 지수 오프셋에 따라 오프셋을 사용하면 가수에 대한 부호가 없어도 가수의 시작 전에 또는 종료 후에 소수점을 배치 할 수 있습니다.
이는 큰 숫자의 경우 부동 소수점 유형이 가수의 끝을 넘어 소수점을 넣음을 의미합니다.
가수는 24 비트 숫자입니다. 절대 25 비트 숫자를 나타내지 않습니다. 추가 비트가 없습니다. 따라서 단일은 2 ^ 24와 2 ^ 24 + 1을 구별 할 수 없습니다 (이는 첫 25 비트 숫자이며 단일 비트에는 표시되지 않은 마지막 비트와 다릅니다).
따라서 정수의 경우 단일 범위는 -2 ^ 24 ~ 2 ^ 24입니다. 1에 2 ^ 24를 더하려고하면 2 ^ 24가됩니다 (유형에 관한 한 2 ^ 24와 2 ^ 24 + 1은 같은 값이므로). 온라인으로 사용해보십시오 . 정수에서 단일로 변환 할 때 정보가 손실되는 이유입니다. 그리고 이것은 또한 단일 또는 이중을 사용하는 루프가 실제로는 눈치 채지 않고 무한 루프가 될 수있는 이유입니다.