Forum: PC-Programmierung Integer -> LSB invertieren


von Johnny K. (johnny_knoxville)


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

von Sid (Gast)


Lesenswert?

Zum Beispiel mit +1 ?

von Karl H. (kbuchegg)


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

von speedy (Gast)


Lesenswert?

Programmiersprache?

von Johnny K. (johnny_knoxville)


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.

von Johnny K. (johnny_knoxville)


Lesenswert?

speedy schrieb:
> Programmiersprache?

C

von Sid (Gast)


Lesenswert?

Dann die khb-Lösung:

i^=1;

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

von Johnny K. (johnny_knoxville)


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

von Link zu (Gast)


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. ;-)

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.