www.mikrocontroller.net

Forum: PC-Programmierung Integer -> LSB invertieren


Autor: Johnny Knot (johnny_knoxville)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein Problem, und weiß nicht weiter.

Ich habe einen Integer z.B. 1010 0100b und möchte das LSB invertieren, 
habe aber keine Ahnung, wie ich hier vorgehen soll.

Zuerst habe ich an folgende Lösung gedacht, Integer in Bit Array, und 
das Feld am LSB mit einer Funktion so verknüpfen, damit das LSB 
invertiert ist.

MfG

Autor: Sid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Beispiel mit +1 ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johnny Knot schrieb:

> Zuerst habe ich an folgende Lösung gedacht, Integer in Bit Array, und
> das Feld am LSB mit einer Funktion so verknüpfen, damit das LSB
> invertiert ist.

Grundsätzlich nicht so falsch, aber zu kompliziert gedacht.

  int i;

  i = ...

  i = i ^ 0x0001;    // das LSB mit einem XOR flippen

Autor: speedy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmiersprache?

Autor: Johnny Knot (johnny_knoxville)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sid schrieb:
> Zum Beispiel mit +1 ?

Ja, wäre grundsätzlich natürlich absolut richtig, aber in meinem Fall 
nicht möglich, da ich zum Beispiel von einem Wert A5hex auf A4hex 
schließen muss bzw. auch umgekehrt. Bisschen kompliziert erklärt, aber 
in meiner Anwendung funktioniert das leider nicht.

Vgl:   0b0100  +  1 =   0b0101

       0b0101  +  1 =   0b0110
Resultat: Stimmt natürlich, aber in meiner Anwendung darf das nicht der 
Fall sein.

Autor: Johnny Knot (johnny_knoxville)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
speedy schrieb:
> Programmiersprache?

C

Autor: Sid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann die khb-Lösung:

i^=1;

Wäre die c-Fetischkurzform, von khbs Vorschlag.

Autor: Johnny Knot (johnny_knoxville)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Johnny Knot schrieb:
>
>> Zuerst habe ich an folgende Lösung gedacht, Integer in Bit Array, und
>> das Feld am LSB mit einer Funktion so verknüpfen, damit das LSB
>> invertiert ist.
>
> Grundsätzlich nicht so falsch, aber zu kompliziert gedacht.
>
>   int i;
>
>   i = ...
>
>   i = i ^ 0x0001;    // das LSB mit einem XOR flippen

Genau so habe ich mir das vorgestellt. Danke

Autor: Link zu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johnny Knot schrieb:
> Genau so habe ich mir das vorgestellt. Danke
Du könntest dir mal die Artikel-Sammlung anschauen, für diesen Fall wäre 
es Bitmanipulation: Standard C 3 gewesen. ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.