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
Gast
#1679796
Zum Beispiel mit +1 ?
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
Gast
#1679799
Programmiersprache?
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.
speedy schrieb: > Programmiersprache? C
Gast
#1679818
Dann die khb-Lösung: i^=1; Wäre die c-Fetischkurzform, von khbs Vorschlag.
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
Gast
#1680064
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
Bitte melde dich an, um einen Beitrag zu schreiben.