Ich habe zwei 16-Bit-Shorts (s1 und s2) und versuche, sie zu einer einzigen 32-Bit-Ganzzahl (i1) zusammenzufassen. Gemäß der Spezifikation, mit der ich zu tun habe, ist s1 das höchstwertige Wort und s2 das niederwertige Wort, und das kombinierte Wort scheint vorzeichenbehaftet zu sein. (d.h. das oberste Bit von s1 ist das Vorzeichen.)
Wie lassen sich s1 und s2 am saubersten kombinieren?
Ich dachte an etwas wie
const utils::int32 i1 = ((s1<<16) | (s2));
tun würde, und es scheint zu funktionieren, aber ich bin besorgt über die Linksverschiebung eines Kurzschlusses um 16.
Ich bin auch an der Idee interessiert, eine Gewerkschaft mit der Arbeit zu beauftragen. Haben Sie eine Meinung dazu, ob dies eine gute oder schlechte Idee ist?