Python operatorên bitwise yên jêrîn peyda dike, ku bi rêzê ve li ser her bit nirxek int-ya jimareya yekjimar a binary, hevbendiya mentiqî, veqetandina mentiqî, veqetandina taybetî, veguheztina bitwise, veguheztina bitê ya çepê, û veguheztina bitê ya rastê pêk tîne.
&
|
^
~
<<
>>
Di vê beşê de, em pêşî ravekirina jêrîn.
- xaç(AND) :
&
- veqetandin(OR) :
|
- EXCLUSIVE-OR operasyonê(XOR) :
^
Piştre, em ê li ser jêrîn nîqaş bikin.
- Operasyonên bitwise li ser hejmarên negatîf
- bit flip( NOT) :
~
- bit guhertin:
<<
,>>
Ji bo bêtir agahdarî li ser çawaniya nivîsandina jimareyên bihejmar di binary, octal, û hexadecimal de, û meriv çawa jimar û rêzikên binary, octal, û hexadecimal bi karanîna fonksiyonên jêrîn vediguhezîne, li gotara jêrîn binêre.
bin()
oct()
hex()
format()
- Gotarên Têkildar:Di Python de jimar û rêzikên binary, octal, û hexadecimal ji hev û din veguherînin.
Di heman demê de, ji bo operasyonên mantiqî (operasyonên Boolean) li ser nirxên boolean (rast, xelet) li şûna operasyonên bitwise, li gotara jêrîn binihêrin. Bikaranîn û,an li şûna &,|.
xaç(AND) :&makînevan
Ev nimûneyeke mentiqî ye Û bikaranîna & amp; operator, digel ku encam ji hêla bin() ve hatî veguheztin rêzek di navnîşana binary de.
x = 9 # 0b1001 y = 10 # 0b1010 print(x & y) print(bin(x & y)) # 8 # 0b1000
veqetandin(OR) :|makînevan
Mînakek hilberek mentiqî (OR) bi karanîna | operator, digel ku encam ji hêla bin() ve vediguhere rêzek di navnîşana binary de û bi hev re derdixe.
print(x | y) print(bin(x | y)) # 11 # 0b1011
EXCLUSIVE-OR operasyonê(XOR) :^makînevan
Nimûneya hilberek mentiqî (XOR) ya ku operatora ^ bikar tîne, bi encama veguheztina rêzikek di nîşana binary de bi karanîna bin() re tê hev kirin.
print(x ^ y) print(bin(x ^ y)) # 3 # 0b11
Têkiliya di navbera ketin û derketinê de ji bo her bitek AND, OR, û XOR a mantiqî di tabloya jêrîn de tê xuyang kirin.
Ketina 1 | Ketina 2 | xaç(AND) | veqetandin(OR) | EXCLUSIVE-OR operasyonê(XOR) |
---|---|---|---|---|
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
Operasyonên bitwise li ser hejmarên negatîf
Dema ku operasyonek bitwise li ser hejmareke neyînî tê kirin, nirx wekî ku di forma temamkerê du-yê de hatî destnîşan kirin tête kirin.
Lêbelê, bala xwe bidin ku heke hûn bi karanîna bin() an format() jimareyek negatîf veguherînin rêzek binary, dê nirxa mutleq li şûna forma temamkerê duyan nîşanek kêm be.
Heke hûn dixwazin xêzek bi nûnertiya du ya temamker bistînin, wek ku li jêr tê xuyang kirin, bi hejmara herî zêde ya reqemên bit-ê yên ku hewce ne, Û bigirin.
- Ji bo 4-bit
0b1111
(=0xf
) - Ji bo 8-bit
0xff
- Ji bo 16-bit
0xffff
Hûn dikarin xêzek ji nûnertiya du ya temamker bistînin (her bit tê berevajîkirin û 1 tê zêdekirin).
x = -9 print(x) print(bin(x)) # -9 # -0b1001 print(bin(x & 0xff)) print(format(x & 0xffff, 'x')) # 0b11110111 # fff7
- Gotarên Têkildar:Di Python de jimar û rêzikên binary, octal, û hexadecimal ji hev û din veguherînin.
bit flip:~makînevan
~nimûneya bit flipping bi operatoran.
Veguheztina bitwise ne tenê nirxa her bitek berevajîkirî ye. Nirxa vegerê dema ku vê operatorê bikar tîne wiha ye.~x
#ERROR!-(x+1)
-(x+1)
Ev nirx hevwate ye ku nirxa têketinê x wekî forma temamkerê duyan were hesibandin û hemî bit berevajî bike.
Wekî ku li jor hatî behs kirin, di Python de, gava ku jimareyek negatîf bi karanîna bin(), format(), hwd, vediguhere rêzek binary, ew ne di forma temamkerê du de ye, lê di nirxa mutleq bi nîşana minusê ye. Ji ber vê yekê, veguherandina ~x-ê rasterast ji bo rêzek dê encam nede stringek ku bitsên nirxa orîjînal berevajîkirî ne.
x = 9 # 0b1001 print(~x) print(bin(~x)) # -10 # -0b1010
Dema ku em operasyona AND-ê pêk tînin û wê vediguherînin xêzek ji du temsîla temamker, em dikarin bibînin ku bitên nirxa orîjînal berepaş in.
Wekî din, wek nimûne, ji bo bidestxistina rêzikek bit a ku 4-reqemî ye ku rêzika bit a 4-reqemî ye û wekû ye berevajîkirî ye (bitikê nîşanê ji holê rakiriye), formata() bikar bînin da ku sifirên nirxa AND-ê wekî jêrîn dagirin.04b'
print(bin(~x & 0xff)) print(format(~x & 0b1111, '04b')) # 0b11110110 # 0110
bit guhertin:<<,>>
Nimûneyên guheztina bitê ya çepê û guheztina bitê ya rastê bi karanîna operatorên guheztina bit.
x = 9 # 0b1001 print(x << 1) print(bin(x << 1)) # 18 # 0b10010 print(x >> 1) print(bin(x >> 1)) # 4 # 0b100
Ji bo nirxên neyînî, bit nîşana dirêjkirin û veguhestin, û nîşana erênî / neyînî wek xwe dimîne. Nirxek neyînî wêneyek rêzek 1-an e ku heya çepê ye.
x = -9 print(bin(x)) print(bin(x & 0xff)) # -0b1001 # 0b11110111 print(x << 1) print(bin(x << 1)) print(bin((x << 1) & 0xff)) # -18 # -0b10010 # 0b11101110 print(x >> 1) print(bin(x >> 1)) print(bin((x >> 1) & 0xff)) # -5 # -0b101 # 0b11111011
Çêtir e ku meriv li gorî rêzikên du bêjeyên temamker bifikire, ji ber ku fikirîna li gorî jimareyan ne zelal e.