Hallo, ich habe eine zweistellige, dezimale Zahl. Die erste Stelle soll in das low-Nibble und die zweite Stelle (Zehnerstelle) in das high-Nibble eines Bytes gesetzt werden. Hat jemand eine Idee, wie ich das Problem lösen kann? Danke!
Durch 10 dividieren? Den Rest bei der Division berechnen? Für beides gibt es Operationen in C. / ist die Division % ist der Rest der Division.
Gast
#1513395
ÄHm ..........ja klar du musst die zahlen vernibblen
Darauf bin ich schon gekommen. Aber wie kann ich eine Zahl NUR in ein Nibble reinschreiben?
Basilius W. schrieb: > Darauf bin ich schon gekommen. Dann sag das doch gleich! > Aber wie kann ich eine Zahl NUR in ein > Nibble reinschreiben? Mittels Bit-Operationen? Zuerst mit einem & und entsprechender Maske die jeweiligen Bits gezielt auf 0 setzen. Dann mit einem Oder die jeweils notwendigen Bits gezielt auf 1 setzen. Beim High-Nibble muss man sich halt den Wert dessen 1-Bits eingeodert werden sollen entsprechend zurechtschieben. Ach, ich vergass. Du willst ja Low-Nibble und High-Nibble gleichzeitig setzen. Vergiss die & Operation. Low-Nibble (Einer) mit einer entsprechend zurechtgeschobenen Version des 'High-Nibbels' (Zehner) verodern und fertig.
Gast
#1513400
Versuchs mal mit AND und OR
oh mann, richtig... Danke!
ergebnisbyte = (zehner << 4) | (einer)
Gast
#1513411
a=zahl1_10er, b=zahl2_1er, c=byte_BCD c=b*16+a; oder wenn nur a upgedated wird c=c&0xf0|a; oder bei nur b c=(c|~15)&~b<<4
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.