Optimierung der bitweisen Operationen in C

8

Ich hatte ein Problem in der Hand als dies: Übung 2-6. Schreiben Sie eine Funktion setbits (x, p, n, y), die x mit den n Bits zurückgibt, die bei beginnen Position p wird auf die ganz rechten n Bits von y gesetzt, wobei die anderen Bits unverändert bleiben. "

Ich habe dafür eine Funktion geschrieben. Dies funktioniert wie erwartet.

%Vor%

Aber irgendwie habe ich das Gefühl, dass die Logik lang ist und optimiert werden kann, mir aber noch keine andere Möglichkeit einfällt. Kann mir jemand bitte eine Optimierung vorschlagen?

    
Diwakar Sharma 27.06.2013, 04:26
quelle

1 Antwort

10

Um eine n Bitmaske zu erstellen:

%Vor%

Um es bei Bit p zu starten:

%Vor%

Löschen Sie die entsprechenden Bits in x :

%Vor%

Extrahiere die Bits von y :

%Vor%

Verschiebe sie in die Position p :

%Vor%

Setzen Sie alles zusammen:

%Vor%

Oder in einer kompakteren Form:

%Vor%     
Carl Norum 27.06.2013, 04:37
quelle

Tags und Links