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?
Um eine n
Bitmaske zu erstellen:
Um es bei Bit p
zu starten:
Löschen Sie die entsprechenden Bits in x
:
Extrahiere die Bits von y
:
Verschiebe sie in die Position p
:
Setzen Sie alles zusammen:
%Vor%Oder in einer kompakteren Form:
%Vor%Tags und Links c bit-shift bitwise-operators