вот некоторый код C:
float phaseFrac(unsigned int inPhase)
{
union { unsigned int itemp; float ftemp; } u;
u.itemp = 0x3F800000 | (0x007FFF80 & ((inPhase)<<7));
return u.ftemp - 1.f;
}
Я не могу обдумать использование здесь «союза». Прав ли я, думая, что, поскольку и uint, и float являются 32-битными, результирующий битовый шаблон в объединении интерпретируется как значение с плавающей запятой? Или здесь есть какая-то другая магия?
Спасибо...