![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 06.08.2000
Beiträge: 385
|
![]() 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 ? |
![]() |
![]() |
![]() |
#2 |
Elite
![]() |
![]() c = (a << 8) ¦ b
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 06.08.2000
Beiträge: 385
|
![]() könntest du die funktion des codes kurz erklären ?
|
![]() |
![]() |
![]() |
#4 |
Veteran
![]() Registriert seit: 05.04.2002
Beiträge: 331
|
![]() 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
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm! |
![]() |
![]() |
![]() |
#5 |
Veteran
![]() Registriert seit: 06.08.2000
Beiträge: 385
|
![]() 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; |
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 05.04.2002
Beiträge: 331
|
![]() 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
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm! |
![]() |
![]() |
![]() |
#7 |
Elite
![]() |
![]() 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.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#8 |
Veteran
![]() Registriert seit: 05.04.2002
Beiträge: 331
|
![]() war ein schlampigkeitsfehler von mir. danke für den hinweis!
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm! |
![]() |
![]() |
![]() |
#9 | |
Hero
![]() |
![]() 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
____________________________________
God, Root, what is difference? |
|
![]() |
![]() |
![]() |
#10 | |
Veteran
![]() Registriert seit: 06.08.2000
Beiträge: 385
|
![]() Zitat:
wie kann ich das umgekehrt realisieren ? ich habe ein 16Bit register c und möchte es in 2 8Bit register teilen ! |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|