Avatar billede krukken Juniormester
14. juni 2007 - 16:03 Der er 2 kommentarer og
1 løsning

Skiftning af bits

Hej,

Jeg er ved at sende nogle bits til et display. Er det en nem og hurtig måde er lave følgende:

Udgangspunkt: 10100000
Resultat: 01010000

Der skal ikke laves nogen operation på de sidste fire bits, men bit 8 skal blive til bit 5, bit 7 skal blive til bit 6, bit 6 skal blive til bit 7 og bit 5 skal blive til bit 8. Man spejlvender vel sådan set de "sidste" fire bits.
Avatar billede bertelbrander Novice
14. juni 2007 - 19:42 #1
Jeg tror ikke rigtigt at der er en meget smart måde at gøre det på.

Du kunne:
static const unsigned char Mirror[16] = {0x00, 0x80, 0x40, 0xC0, ... 0xF0};
unsigned char result = (input & 0x0F) | Mirror[input >> 4];
Hvis det skal være endnu hurtigere og du har plads nok (256 bytes) kan du lave det hele som et tabel opslag.
Avatar billede segmose Nybegynder
20. juni 2007 - 12:37 #2
En ren beregnings version (utestet).

int reflect(int org) {
  int res = 0;
  for (int i = 0; i < 4; ++i) {
    res = (res << 1);
    res + = i & 0x1;
    i >>= 1;
  }
}

kald:
res = reflect((input & 0xF0) >> 4) << 4 + input & 0x0F;
Avatar billede segmose Nybegynder
20. juni 2007 - 12:37 #3
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester