組み込みデバイスから、64 ビット整数を表す 4 つの 16 ビット レジスタから読み取ります。読み取り関数はそれらを uint16_t で読み取り、それを float 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);
精度はどうですか?