![]() |
Grundlegende C Frage !
ich habe 2 8bit register
a = xxxxxxxx b = yyyyyyyy ich möchte die beiden register in ein 16bit register schreiben nach folgenden muster c = xxxxxxxxyyyyyyyy wie mache ich das am einfachsten ? |
c = (a << 8) ¦ b
|
könntest du die funktion des codes kurz erklären ?
|
ganz einfach: du shiftest die 8 bits von x um 8 stellen nach links, dann steht da
xxxxxxxx00000000 und dann machst du ein bitweises oder mit 00000000yyyyyyyy |
danke für die rasche antwort und erklärung !
eine frage habe ich allerdigs noch ! ich habe eine zahl nach folgenden format ergebniss = 189,6583454596; wie kann ich einfachsten lösen das ich die Ziffern der Zahl einzeln habe ! am schluss hätte ich gern h = 1; z = 8; e = 9; n = 6; m = 5; |
h = ergebnis / 100;
z = ergebnis - (h * 100); e = ergebnis - (h * 100 - (z * 10)); ... wobei h, z und e vom typ long sind. so sollts funktionieren |
funktinoiert nicht ganz so, weil du für z bei zb 345 45 rauskriegst, nicht 4, du hast das /10 vergessen in der zweiten zeile.
andere version wär zb: t = zahl % 10000 / 1000; h = zahl % 1000 / 100; z = zahl % 100 / 10; e = zahl % 10; kannst hübsch in eine schleife verpacken auch. |
war ein schlampigkeitsfehler von mir. danke für den hinweis!
|
Zitat:
Annahme c ist ein unsigned int, a und b sind unsigned chars c =(((unsigned int)a) << 8) | (unsigned int)b; Schaut jetzt vielleicht etwas komplizierter aus, aber was ich schon mit "simplen" Shiftoperationen erlebt habe.... mfG Clystron |
Re: Grundlegende C Frage !
Zitat:
wie kann ich das umgekehrt realisieren ? ich habe ein 16Bit register c und möchte es in 2 8Bit register teilen ! |
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag