Используя IEEE-754, число с плавающей запятой 1 записывается как:
0 01111111 00000000000000000000000 (base-2) = 3f80 0000 (base-16)
Итак, ваше предположение верно.К сожалению, битовый массив, представленный 0x3f800000
, не может быть назначен для числа с плавающей запятой, просто выполнив:
float a = 0x3f800000
Шестнадцатеричное число сначала будет преобразовано в целое число без знака, которое имеет значение 1065353216
в базе-10.Затем это число будет неявно преобразовано в ближайшее число с плавающей запятой.
Короче говоря, хотя ваш битовый шаблон для числа с плавающей запятой IEEE-754 правильный, ваше предположение о том, как назначить этот шаблон, неверно.,Посмотрите на Преобразование шестнадцатеричного числа в число с плавающей запятой и наоборот в C , как этого можно достичь, или другие ответы в этом вопросе.