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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.