Wert in einer Variable umdrehen!
-
Ich hätte ein frage:
also wenn ich z.b.: eine Variable sum habe, die den Wert 0x60 beinhaltet also 01100000, wie kann ich diesen Wert umdrehen, dass 0x06 rauskommt? also: 00000110??
geht das irgendwie. Hab jetz schon ziemlich viel herumprobiert aber bin noch nicht darauf gekommen?mfg rene
-
int x = 0x60; int y = ~ x;
Probier das mal aus.
-
Naja das ist da das sog. 1er Komplement und dann würde ich 10011111 erhalten!
mfg rene
-
Ahh, tut mir leid. Du meinst spiegeln...
Folgendes hab ich mit Google(!) gefunden:
for ( i = 0; i < 8; i++ ) { gespiegelt >>= 1; gespiegelt |= original & 0x80; original <<= 1; }
-
Hab ich gerde probiert!
Funktioniert leider nicht! aber trotzdem danke!mfg rene
-
Wenn es nur um ein Byte geht,
unsigned char b; // reverse this (8-bit) byte b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023;
Ich hab das von hier, wo sich auch ein Haufen anderer praktischer Hacks dieser Art findet.
-
Hey super vielen Dank! Funktioniert einwandfrei!
Danke nochmals!
mfg rene
-
So viele Möglichkeiten gibts bei einem Byte nicht, da könntest du auch ne Look-up-table nehmen.
Oder probier das aus:unsigned char reverse(unsigned char b) { b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; b = (b & 0xCC) >> 2 | (b & 0x33) << 2; b = (b & 0xAA) >> 1 | (b & 0x55) << 1; return b; }