Wie würden Sie setzen, und klar, ein einzelnes bit in Gehen?
In Golang, wie Sie setzen und löschen einzelner bits eines integer? Zum Beispiel Funktionen, die sich so Verhalten:
clearBit(129, 7) //returns 1
setBit(1, 7) //returns 129
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Funktion um ein bit. Zuerst verschieben die Zahl 1 die angegebene Anzahl von Leerzeichen in den integer (so wird es, 0010, 0100, etc.). Dann ODER es mit der ursprünglichen Eingabe. Dies lässt die anderen bits unberührt, wird aber immer die Ziel-bit auf 1.
Hier ist eine Funktion zum löschen des bit. Erste Schicht die Nummer 1 die angegebene Anzahl von Leerzeichen in den integer (so wird es, 0010, 0100, etc.). Dann kippen Sie jedes bit in der Maske mit der
^
operator (so 0010 1101 wird). Verwenden Sie dann eine bitweise UND-Verknüpfung, welche sich aber nicht berühren Sie die zahlenAND
'ed mit der 1, die aber entfernt den Wert in der Maske auf 0 gesetzt ist.Schließlich ist hier eine Funktion, um zu überprüfen, ob ein bit gesetzt ist. Verschiebung der Nummer 1 die angegebene Anzahl von Leerzeichen (also es wird zu 0010, 0100, etc) und dann UND es mit dem Ziel-Nummer. Wenn die sich ergebende Zahl größer ist als 0 (es werden 1, 2, 4, 8, etc), dann wird das bit gesetzt ist.
x &= ^(1<<7)
oderx |= 1<<7
(oderx ^= 1<<7
zu wechseln, oder(x & 1<<7 == 0)
um zu sehen, ob ein bit gesetzt ist). Das ist weithin bekannt genug, um nicht um einen Kommentar, aber wenn Sie das Gefühl, Sie sollten erklären können (z.B. Ihr team nicht von einer bit-twiddling Welt), nur Kommentar über Ihre Absicht, bei der ersten Verwendung jedes idiom. Auch, Leute oft die Definition von Konstanten repräsentiert bits oder bit-combos, so dass Sie nicht haben, um zu schreiben, die1<<n
und erinnere mich an die Rechtn
jeder Zeit, undiota
kann dazu beitragen, dass diese ständigen Erklärungen prägnant.Gibt es auch eine kompakte notation, um klar ein bisschen. Der Betreiber ist
&^
auf und rief "und nicht".Verwenden Sie diesen operator, der
clearBit
Funktion kann wie folgt geschrieben werden:Oder so: