В формате с плавающей запятой одинарной точности смещение порядка равно 127. И конкретный битовый шаблон, который вы указали кодирует число с плавающей запятой со 128 (1000000) в качестве показателя степени:
0 10000000 11000000000000000000000
s exponent fraction
Сначала посмотрите на бит знака (s), это 0. Итак, это положительное число.
Затем вы вычитаете смещение экспоненты из экспоненты, откуда берется 128 - 127. Это дает 1
.
Затем мы начинаем складывать биты дроби вместе (11000000000000000000000
):
1 + 0.5 + 0.25 + 0 + 0 + 0....
Дает 1,75
Теперь у нас есть 1 (знак) * 2 ^ 1 (показатель степени) * 1,75 (дробь) = 2 * 1,75 = 3,5.
Другой пример:
00111110101010101010101010101011
Сломай:
0 01111101 01010101010101010101011
s exponent fraction
Знак равен 0, так что это снова положительное число.
125 (01111101) показатель степени, вычесть из него смещение степени: 125 - 127 = -2
Расшифруйте дробь 01010101010101010101011
1 + 0 + 0.25 + 0 + 0.0625 + 0 + 0.015625 + 0 + 0.00390625 + 0 + 0.0009765625 + 0 + 0.000244140625 + 0 + 0.00006103515625 + 0 + 0.0000152587890625 + 0 + 0.000003814697265625 + 0 + 9.5367431640625e-7 + 0 + 2.384185791015625e-7 + 1.1920928955078125e-7
Это дает 1.3333333730697632
или около того.
Теперь складываем все вместе:
1(sign) * 2^-2(exponent) * 1.3333333730697632(fraction) = 0.25 * 1.3333333730697632 = 0.3333333432674408 =~ 0.3333333
person
Esailija
schedule
13.08.2012