Wie schiebt man in c im Kreis

Gast #2744220
Lesenswert?

Hallo,

ich möchte in einem Kreis/Ring schieben, d.h. wie mit dem >> Operator 
nur dass das herausgeschobene Bit auf der anderen Seite wieder 
reingeschoben wird. Prozessor ist ein Atmel wenn das von Bedeutung ist.

Gibts da eine schnelle Lösung / Befehl?
Oder muss man das Bit abfragen dann schieben und per Hand wieder 
einfügen

z.B. so
if (0x80 & variable) ((variable << 1) + 1); else (variable << 1);
(nicht ausprobiert ... aber so in der Art)

Danke
#2744274
Lesenswert?

haha schrieb:
> ich möchte in einem Kreis/Ring schieben, d.h. wie mit dem >> Operator
> nur dass das herausgeschobene Bit auf der anderen Seite wieder
> reingeschoben wird. Prozessor ist ein Atmel wenn das von Bedeutung ist.

Da es von Atmel viele verschiedene Architekturen gibt, ist der 
Hersteller alleine nicht von Bedeutung.

> Gibts da eine schnelle Lösung / Befehl?

In C gibt es da nichts einfaches. Entweder mußt du inline assembler 
nutzen, oder es eben so machen:

> Oder muss man das Bit abfragen dann schieben und per Hand wieder
> einfügen
#2744320
Lesenswert?

Ghost schrieb:
> Oh Mann, einen Post obendrüber steht doch, wie es einfach in C gehen
> kann.

Das ist aber auch nix anderes als

Rolf Magnus schrieb:
>> das Bit abfragen dann schieben und per Hand wieder einfügen

nur daß halt ein Oder statt einer Abfrage benutzt wird. Übrigens macht 
gcc bei mir aus keinem der beiden einen rotations-Befehl.

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