Bits in einer Ganzzahl in Python ändern

9

Also, ich habe eine ganze Zahl mit einem Wert 7. (0b00000111) Und ich möchte es durch eine Funktion zu ersetzen 13. (0b00001101) Also, was ist der beste Algorithmus, um Bytes in einer ganzen Zahl zu ersetzen? Zum Beispiel:

%Vor%     
Váradi Norbert 29.08.2012, 08:31
quelle

3 Antworten

20

Sie brauchen nur:

%Vor%

Beachten Sie, dass die Bitnummern ( index ) 0 sind, wobei 0 das niedrigstwertige Bit ist.

Beachten Sie auch, dass der neue Wert zurückgegeben wird , es gibt keine Möglichkeit, eine Ganzzahl "an Ort und Stelle" zu ändern, wie Sie es anzeigen (zumindest denke ich nicht).

    
unwind 29.08.2012 08:49
quelle
17

Diese funktionieren für Ganzzahlen jeder Größe, sogar größer als 32 Bit:

%Vor%

Wenn Sie die Dinge kurz mögen, können Sie einfach verwenden:

%Vor%     
Kos 29.08.2012 08:54
quelle
4

Sie können bitweise Operationen verwenden. Ссылка

Wenn Sie ein gegebenes Bit auf 1 setzen möchten, können Sie bitweise 'oder' mit 1 an gegebener Position verwenden:

0b00000111 | 0b00001000 = 0b00001111

Um ein gegebenes Bit auf 0 zu setzen, können Sie bitweise 'und'

verwenden

0b00001111 & amp; 0b11111011 = 0b00001011

Beachten Sie, dass das Präfix 0b für Binärzahlen und 0x für Hexadezimal steht.

    
wmiel 29.08.2012 08:39
quelle

Tags und Links