Forum: Mikrocontroller und Digitale Elektronik Modulo nur ganze Zahlen?


von Olli (Gast)


Lesenswert?

Hallo,
ich möchte mit folgendem Code eine Hex  Zahl in eine  Ascii Hex bringen.
uint8_t zahl;
uint8_t zehner;
uint8_t einer;
zahl++;
zehner  = (zahl / 10) | 0x30;
einer   = (zahl % 10) | 0x30;
Das Funktioniert auch soweit ganz gut, bis auf das die einer Stelle, 
beim Hochzählen, immer nur 2,4,6 u.s.w. anzeigt. Die Zehner Stelle ist 
einwandfrei(1,2,3,4 u.s.w.). Woran liegt das?
(bitte nicht meckern, bin Anfänger)
Gruss
Olli

von Uhu U. (uhu)


Lesenswert?

Wo initialisierst du denn die Variable zahl?

Poste mal den entsprechenden Code vollständig.

von Olli (Gast)


Lesenswert?

habe vergessen es zu schreiben, dass sie mit 0 init. wird. Ist da 
Grundsätzlich was falsch, oder warum kommen nur die geraden Zahlen bei 
einer?

von Uhu U. (uhu)


Lesenswert?

Da mit dem von dir geposteten Code nur eine Wandlung durchgeführt wird, 
kann der von dir beschriebene Effekt damit nicht entstehen - es wird nur 
ein Wert gewandelt und was sonst passiert, kann ich dir leider nur 
sagen, wenn du deinen Code vollständig postst.

von magnetus (Gast)


Lesenswert?

Olli schrieb:
> zehner  = (zahl / 10) | 0x30;
> einer   = (zahl % 10) | 0x30;

Das "|" (oder) macht hier keinen Sinn. Probier es mal mit "+".

zehner  = (zahl / 10) + 0x30;
einer   = (zahl % 10) + 0x30;

Gruß,
Magnetus

von (prx) A. K. (prx)


Lesenswert?

magnetus schrieb:

> Das "|" (oder) macht hier keinen Sinn. Probier es mal mit "+".

Irrelevant.

von Uhu U. (uhu)


Lesenswert?

magnetus schrieb:
> Das "|" (oder) macht hier keinen Sinn. Probier es mal mit "+".

Das ist schon richtig so - + und | haben hier denselben Effekt. 
Zumindest, wenn zahl < 100 ist.

von Uwe .. (uwegw)


Lesenswert?

Und wieso schreibst du 0x30? Nimm stattdessen '0', dann weiß man sofort, 
dass es um eine Umwandlung einer Ziffern in ASCII geht...

von Uhu U. (uhu)


Lesenswert?

Jungs, jetzt beißt euch mal nicht an Nebensächlichkeiten fest. Es ist 
völlig gleichgültig, ob man 0x30, 060, '0' oder 48 schreibt.

von Karl H. (kbuchegg)


Lesenswert?

Eben.
Irgendwo im Code gibt es noch ein zweites ++ oder etwas Gleichwertiges.
Aber solange er sich wieder einmal standhaft weigert, den Code komplett 
herzuzeigen, kann man ihm den Fehler auch nicht zeigen.

PS: und ausserdem steht in der Aufgabenstellung etwas von Hex-Zahlen. 
Das wird doch nicht wieder unser krampfhafter HEX-Umrechner sein?

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Karl heinz Buchegger schrieb:
> Das wird doch nicht wieder unser krampfhafter HEX-Umrechner sein?

Dabei hattet ihr es ihm so erklärt, dass selbst ein Grundschüler es 
verstanden hätte...

von Lehrmann M. (ubimbo)


Lesenswert?

modulo nur mit int !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.