- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 23

Thema: 16-bit int in 2 8-bit int zerlegen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo Christoph,
    Zitat Zitat von Christoph2 Beitrag anzeigen
    ahhh danke!!
    Ich hab aber nur die low variable uint8_t gemacht, die high hab ich int8_t gemacht, sonst hab ich keine vorzeichen bei der int16_t.
    Ich denke du hast das mit signed und unsigned noch nicht wirklich verstanden.

    Der 8-Bit-Wert 0b11111111 hat unsigned den Wert 255 und signed -1.
    Das höchstwertige Bit ist das Vorzeichen 0 = "+" und 1 = "-" (zumindest beim üblichen 2er Komplement)

    Wird nun unsigned auf 16-Bit erweitert ergibt dies 0b00000000'11111111, bei signed wird es 0b11111111'11111111

    Der 8-Bit-Wert 0b01111111 ist unsigned und signed = 127.
    Entsprechend wird unsigned und signed als 16-Bit 0b00000000'01111111

    Bei der Erweiterung werden die zusätzlichen Bits bei unsigned immer mit 0en gefüllt.
    Bei signed, entsprechend dem Vorzeichen-Bit mit 0en oder 1ern.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2014
    Beiträge
    13
    Hallo Peter,
    der letzte Post war von mir auf einen 6 Jahre alten Thread, aber mit neuer Ausgangslage (wie erwähnt)!

    Bitte sieh dir meinen Post an.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Hallo,
    ich würde in der Empfangs-Programm vor dem Zusammenbauen a=(b<<8 )|c das most significant byte erst als uint16 casten bevor es geshiftet wird.
    Also a=( ((uint16_t)b) <<8 ) |c
    Grüße,
    Bernhard

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2014
    Beiträge
    13
    Grüß dich Bernhard,

    erledigt (auch hier im Code im Forum).

    Sieht nun so aus:

    zahl = (((uint16_t) HByte) << 8 ) | LByte;

    Leider immer noch dasselbe Problem.

    Gruß
    Markus

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress