Forum: Mikrocontroller und Digitale Elektronik bits eines bytes umdrehen


von gamecounter (Gast)


Lesenswert?

Hilfeee!

Ich such eine ganz einfache Funktion, oder mathematische Operation, mit 
denen ich die einzelnen Bits eines Bytes umdrehen kann. (für meinen 
mega8 in C)

Bsp:

Aus  0b11100100
Wird 0b00100111

Ich steh einfach auf der leitung.

Wahrscheinlich is die lösung so einfach, dass ich sie deshalb nicht bei 
google find.

danke für eure hilfe

von Roland P. (pram)


Lesenswert?

das hatten wir erst vor kurzem:

goto Suchfunktion vom Forum
set  input = umdrehen


einen einfachen Befehl gibt es nicht, Peter Danegger hat glaub ich eine 
Lösung für c die ~20 Takte braucht.

Gruß
Roland

von Anton S. (analysis)


Lesenswert?

Beitrag "Inline Assembler- Bits spiegeln"
bzw. Boardsuche

Wenn die Frage gestattet ist: Warum müssen bei dir die Bits vertauscht 
werden?

von zero_gravity (Gast)


Lesenswert?

du willst also die bits an einer seite des bytes "spiegeln", oder?

hab zwar von c nich so die ahnung, aber nimm einfach den 
inline-assembler und roll das eine byte rechts raus ins carry-flag und 
von da linkswärtig wieder in ein anderes byte... das ganze acht mal und 
schon is dein byte gespiegelt ^^

gibt aber - besonders in c - bestimmt ne elegantere methode :P

von Matthias L. (Gast)


Lesenswert?


von Thomas (Gast)


Lesenswert?

Hallo,
einfach XOR mit 0xFF

byte ^= 0xFF ;

Gruss
Thomas

von Thomas (Gast)


Lesenswert?

Ups,
war wohl nix...
Das invertiert die Bits, war aber nicht gewünscht. Mein Fehler, sorry.

von gamecounter (Gast)


Lesenswert?

danke für die flotten antworten!!

ich muss mich entschuldigen das ich die suche nicht richtig benutzt hab, 
denn benutzt hab ich sie, nur mal wieder viel zu kompliziert gedacht, 
anstatt nach einfachen wörtern zu suchen.

@Anton Streg:

kennst du solche tage wo einfach alles schief läuft??
ich hab heut so nen tag. nen lm75 an meinen µC angeschlossen, nur er 
will einfach nicht. kommunikation per i2c haut hin, nur das er irgendwie 
falsche werte ausspuckt. jetzt hab ich mir gedacht, das vielleicht, aus 
welchem grund auch immer die bits vielleicht in verkehrter reihenfolge 
empfangen werden.

(Dem war nicht so)

inzwischen glaube ich ich hab den LM75 beim löten verbraten. gibts das?
das er zwar kommuniziert nur falsche werte ausspuckt

werte die er ausspuckt:

1st Byte: 00011101   Dec = 29
2nd Byte: 01110111   Dec = 119

bei raumtemperatur

danke für die hilfe, auch wenns mich jetzt nicht wirklich weitergebracht 
hat.

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