Zum Inhalt springen

Int in Byte


Gast KnapsackSolver

Empfohlene Beiträge

Gast KnapsackSolver
Geschrieben

Hallo Community,

ich habe mal wieder eine Fragen :(:D

Ich habe eine 12 Bit große Zahl ( Digital-to-Analog Converter).

Diese 12 Bit große Zahl muss ich nun in 2 Teile zerlegen!

Die höherwertigsten 4 Bit ( vom MSB rückwärts gezählt) müssen in eine byte Variable.

Die hinterstens 8 Bit müssen in eine weitere Variable.

Wie bekomme ich das gelöst?

Zur weiteren Erklärung, Ausgangssitaution:

12 Bit Zahl (z.B. 1011 0110 1110)

Die ersten 4 Bit müssen in eine Variable also variable1 = 1011

Die letzten 8 Bit müssen in eine Variable also variable2 = 0110 1110

Ich hoffe ihr könnt mir helfen

Geschrieben (bearbeitet)

Moin!

Wieder einmal sind die shift- und UND-Operatoren Deine Freunde.

Die oberen 4 Bit einfach nach rechts shiften und dann zuweisen.

Bearbeitet von Pointerman
Gast KnapsackSolver
Geschrieben

Ja habs hin bekommen... Also sowas hier hab ich gesucht


 UINT16 u8_MASK = 000011111111;


    UINT8 u8_4BitMSB = u16_value>>8;

    UINT8 u8_8BitLSB = u16_value&u8_MASK;

    UINT8 u8_cmdValReg = u8_cmdReg | u8_4BitMSB;

Geschrieben
UINT16 u8_MASK = 000011111111;

Das funktioniert nicht. C und C++ kennen keine Literale für Dualzahlen. u8_MASK hat nicht den erwarteten Wert 255, sondern 37449, weil Zahl-Literale, die mit einer 0 beginnen, als oktal interpretiert werden.

Setz u8_MASK auf 255 oder 0xff, dann passt das.

Gast KnapsackSolver
Geschrieben

Wieso funktioniert das so nicht? Also ich verstehe die Begründung nicht. Ich bin hier ja bei C. Wenn ich hier jetzt z.B. 0b000011111111 schreibe funktioniert das ...

Geschrieben
Ich bin hier ja bei C. Wenn ich hier jetzt z.B. 0b000011111111 schreibe funktioniert das ...

Dann benutzt du einen Compiler, der das unterstützt, beispielsweise GCC. Vom C-Standard vorgeschrieben ist diese Funktionalität nicht.

Gast KnapsackSolver
Geschrieben

Ok das ist gut möglich. Also die von mir gepostete Lösung funktioniert.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...