Gå til innhold

"blåse opp" 4-bits ord til 8-bits


Anbefalte innlegg

Skrevet

Jeg har ett 4-bits ord som jeg skal gjøre om til 8-bits etter følgende mønster:

0000 skal gi 0000000

1010 skal gi 11001100

0110 skal gi 00111100

1111 skal gi 11111111 osv.

 

Operasjonen finner sted på en mikrokontroller med begrenset prosesseringskraft, jeg lurer derfor på om noen vet av en smartere måte som krever mindre regnearbeid enn å maskere en og en bit, skifte denne ett visst antall ganger mot venstre og deretter and-e disse sammen til ett ord, for eksempel:

 

//første bit
bit = ord4 & 0x08;
ord8 |= bit<<4;
ord8 |= bit<<3;
//andre bit
bit = ord4 & 0x04;
ord8 |= bit<<4;
ord8 |= bit<<3;
//osv...

 

jeg skjønner jo at denne koden kan skrives enklere ved bruk av for- og while-sløyfe, men det vil i maskinkode sannsynligvis ta minst like mange klokkesykluser å gjennomføre. Jeg lurer på om det finnes noen triks for å gjøre dette med minimal maskinkode. Anyone?

Videoannonse
Annonse
Skrevet (endret)

siden

00000011 = 0x03

00001100 = 0x0C

00110000 = 0x30

11000000 = 0xC0

y = (x & 1)?0x03:0 +
(x & 2)?0x0C:0 +
(x & 4)?0x30:0 +
(x & 8)?0xC0:0;

Endret av JeffK

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...