WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Grundlegende C Frage ! (http://www.wcm.at/forum/showthread.php?t=76788)

bach 11.11.2002 22:40

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 ?

Who-T 11.11.2002 22:58

c = (a << 8) ¦ b

bach 11.11.2002 23:30

könntest du die funktion des codes kurz erklären ?

irrsinn 12.11.2002 07:14

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

bach 12.11.2002 19:25

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;

irrsinn 12.11.2002 19:30

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

Who-T 12.11.2002 19:37

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.

irrsinn 12.11.2002 19:40

war ein schlampigkeitsfehler von mir. danke für den hinweis!

Clystron 12.11.2002 20:05

Zitat:

Original geschrieben von Who-T
c = (a << 8) ¦ b
Ich würd noch ein paar Typecasts machen, sonst kanns passieren dass nur b rauskommt dabei.

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

bach 24.11.2002 15:24

Re: Grundlegende C Frage !
 
Zitat:

Original geschrieben von bach
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 ?


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