我从代表 64 位整数的四个 16 位寄存器中读取嵌入式设备。读取函数在 uint16_t 中读取它们,我想将其转换为浮点数 32。如果我像这样进行转换,我会收到警告左移计数 >= 类型宽度 [默认启用]。
uint16_t u1,u2,u3,u4;
u1=readregister();
u2=readregister();
u3=readregister();
u4=readregister();
float num11 = (float) (u1 << 48);
float num22 = (float) (u2 << 32);
float num33 = (float) (u3 << 16);
float num44 = (float) u4;
float numm= num11+num22+num33+num44;
printf("%f\n", numm);
准确性如何?