Вы можете разыграть a float*
до char*
просто отлично, это с использованием такого зверя, который может быть проблематичным.
Когда вы отмените ссылку на него, вы просто получите char
представление первой части (но см. Ниже, чтобы понять, что это на самом деле означает, что это не так ясно, как вы думаете) о плавании.
Если вы говорите о числах с плавающей запятой IEE754, 12.2 в числах с плавающей запятой IEEE754 - это (abcd - октеты):
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM (sign, exponent, mantissa).
0 10000010 10000110011001100110011
a aaaaaaab bbbbbbbccccccccdddddddd
00110011
в конце - это 51 (0x33), который вы видите. Причина, по которой вы видите последний бит поплавка, заключается в том, что он хранится в памяти следующим образом (в архитектуре с прямым порядком байтов):
00110011 00110011 01000011 01000001
dddddddd cccccccc bbbbbbbb aaaaaaaa
, что означает, что char*
состав float*
будет указывать на dddddddd
часть.
На архитектурах с прямым порядком байтов вы получите aaaaaaaa
бит, 01000001
или 65 (0x41).