Variable manipulieren

Gast #2263039
Lesenswert?

Hallo,

ich stehe mal wieder auf den Schlau. Nun möchte ich eine Variable A in 
eine Variable B speichern, wobei die Bits der Variablen A in der 
Variablen B anders positioniert werden soll.

zB.

Bit-Stelle     76543210
Variable A = 0x00101100b

Bit-Stelle     01234567
Variable B = 0x00110100b

Wie kann ich diese in ein C-Programm umsetzten?

Gruß
John
#2263068
Lesenswert?

(Ein) schrieb:
> uint8_t a=0b00101100, b=0;
> int i;
>
> for(i = 0; i < 7; i++)
>        b |= (a&(1<<i))?(1<<(7-i)):0;
>
>
> (ungetestet.)

Läuft aber :D

Vielleicht ist das hier etwas schneller:
1
  unsigned char a=0b00101100, b;
2
  int i;
3

4
  a = (a & 0x0F) << 4 | (a & 0xF0) >> 4;
5
  a = (a & 0x33) << 2 | (a & 0xCC) >> 2;
6
  b = (a & 0x55) << 1 | (a & 0xAA) >> 1;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren