Zahl zusammensetzen

Ozzy Ozborn

Erfahrenes Mitglied
Hi,

weiß jemand von Euch, wie man in C eine Zahl zusammensetzt?
Ich habe 3 Zahlen:
vc ist entweder 0 oder 1
ec ist ein char der Länge 8, und
mc ist ein 16-Bit Wert, von dem nur die letzen 7 Bit (7-0) verwendet werde sollen.
Herauskommen soll eine 16-Bit Zahl (unsigned int) mit der Reihenfolge vc ec mc.
Wie kann man so etwas elegant anstellen?

Vielen Dank schon einmal im Voraus, Ozzy
 
((unsigned short int)(((vc%2)*256*128)+(ec*256*64)+(mc%512)))

Müsste richtig sein, probiers aber besser einmal aus.

Sheel
 
Hi,

danke für Deine Antwort, habe jetzt aber noch diese Schreibweise gefunden:
Code:
c = (vc<<15)|(ec<<7)|(mc);

Trotzdem vielen Dank für Deine Hilfe, MfG, Ozzy
 
Hi,

was bringt denn das Maskieren mit 0xff? Da werden doch auch alle Bits genommen. Verstehe ich ehrlich gesagt nicht so ganz...

MfG, Ozzy
 
@deepthroat: Du hast natürlich Recht Was Du aber nicht wissen kannst, ist, dass ich vorher schon dafür sorge, dass in den ersten 9 Bits nur Nullen stehen. Aber Deine Lösung ist natürlich syntaktisch korrekt!

Vielen Dank noch einmal für Eure Hilfe, MfG, Ozzy
 
Zurück