Forum: Mikrocontroller und Digitale Elektronik low nibble bitmanipulation


von Rafi D. (alexanderw)


Lesenswert?

will mit dem low nible Wert eines bytes weiterarbeiten, jedoch kriege 
ich den Wert nicht.
Was mach ich falsch?

uint8_t byte; // Variabler inhalt
uint8_t lownibble;

if(ein bestimmter Wert erreicht)
{
  lownibble = byte & 0x0f; // lownibble aus byte extrahieren
  (tu was mit lownibble)
}

mit dem obigen code erhalte ich doch den Wert des lownibble.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rafi Dafi schrieb:
> if(ein bestimmter Wert erreicht)
> {
>   lownibble = byte & 0x0f; // lownibble aus byte extrahieren
>   (tu was mit lownibble)
> }
>
> mit dem obigen code erhalte ich doch den Wert des lownibble.

Wenn Deine Bedingung "bestimmter Wert erreicht" zutrifft, ja.

Der Ausdruck byte & 0xF liefert die unteren vier Bits von "byte", das 
ist soweit korrekt.

von Falk B. (falk)


Lesenswert?

@  Rafi Dafi (alexanderw)

>Was mach ich falsch?

Der Fehler liegt woanders, deine Maskierung ist OK, siehe 
Bitmanipulation.

von Rafi D. (alexanderw)


Lesenswert?

Falk Brunner schrieb:
> Der Fehler liegt woanders, deine Maskierung ist OK, siehe
> Bitmanipulation.

von da hab ich ja auch die infos hergehollt. nach dem was ich gelsen hab 
muss das doch richtig sein.
oder hab ich einen anhaltspunkt übersehen?

von Kai (Gast)


Lesenswert?

Sieht völlig OK aus.
Falls noch Schwierigkeiten bestehen ist das Maskieren in diesem Video 
gut erklärt:

http://et-tutorials.de/1908/bitweise-manipulation/

von Rolf Magnus (Gast)


Lesenswert?

Was verstehst du unter "jedoch kriege ich den Wert nicht"? Welche Wert 
kriegst du stattdessen und woran erkennst du das?

von Rafi D. (alexanderw)


Lesenswert?

hat sich geklärt.
hab übersehen das er mir nicht den Wert als die auf der Konsole ausgeben 
wird sondern, de dahinter stehende ASCII code, in diesem Fall war es 
0x05.
Also Enquiry, deswegen hater mir auch nichts angezeigt.
closed!

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.