Python nyedhiyakake operator bitwise ing ngisor iki, sing nindakake konjungsi logis, disjunction logis, disjunction eksklusif, inversi bitwise, shift bit kiwa, lan shift bit tengen ing saben nilai integer tipe integer binar.
&
|
^
~
<<
>>
Ing bagean iki, pisanan kita nerangake ing ngisor iki.
- prapatan(AND) :
&
- disjunction(OR) :
|
- EKSKLUSIF-UTAWA operasi(XOR) :
^
Sabanjure, kita bakal ngrembug babagan ing ngisor iki.
- Operasi bitwise ing integer negatif
- dicokot flip( NOT) :
~
- bit shift:
<<
,>>
Kanggo informasi luwih lengkap babagan carane nulis integer ing biner, octal, lan heksadesimal, lan carane ngowahi biner, octal, lan heksadesimal nomer lan strings nggunakake fungsi ing ngisor iki, deleng artikel ing ngisor iki.
bin()
oct()
hex()
format()
- Artikel sing gegandhengan:Ngonversi angka lan string biner, octal, lan heksadesimal menyang lan saka siji liyane ing Python
Uga, kanggo operasi logis (operasi Boolean) ing nilai boolean (bener, palsu) tinimbang operasi bitwise, deleng artikel ing ngisor iki. Gunakake lan, utawa tinimbang & amp;,|.
- Artikel sing gegandhengan:Operator logika Python lan, utawa, lan ora (konjungsi logis, disjungsi, negasi)
prapatan(AND) :&operator
Iki minangka conto lan logis lan nggunakake & amp; operator, karo asil diowahi kanggo senar ing notasi binar dening bin ().
x = 9 # 0b1001 y = 10 # 0b1010 print(x & y) print(bin(x & y)) # 8 # 0b1000
disjunction(OR) :|operator
Conto produk logis (OR) nggunakake | operator, karo asil diowahi kanggo senar ing notasi binar dening bin () lan output bebarengan.
print(x | y) print(bin(x | y)) # 11 # 0b1011
EKSKLUSIF-UTAWA operasi(XOR) :^operator
Conto produk logis (XOR) nggunakake operator ^, digabungake karo asil konversi menyang string ing notasi biner nggunakake bin ().
print(x ^ y) print(bin(x ^ y)) # 3 # 0b11
Hubungan antarane input lan output kanggo saben bit logis AND, OR, lan XOR kapacak ing tabel ing ngisor iki.
Input 1 | Input 2 | prapatan(AND) | disjunction(OR) | EKSKLUSIF-UTAWA operasi(XOR) |
---|---|---|---|---|
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
Operasi bitwise ing integer negatif
Nalika operasi bitwise dileksanakake ing integer negatif, Nilai diproses minangka yen padha ditulis ing wangun nglengkapi loro.
Elinga, yen sampeyan ngowahi integer negatif menyang string binar nggunakake bin () utawa format (), nilai absolut bakal duwe tandha minus tinimbang format pelengkap loro.
Yen sampeyan pengin entuk senar kanthi perwakilan komplemen loro, njupuk AND kanthi jumlah maksimum bit digit sing dibutuhake, kaya sing ditampilake ing ngisor iki.
- Kanggo 4-bit
0b1111
(=0xf
) - Kanggo 8-bit
0xff
- Kanggo 16-bit
0xffff
Sampeyan bisa njaluk senar saka loro perwakilan nglengkapi (saben dicokot kuwalik lan 1 ditambahake).
x = -9 print(x) print(bin(x)) # -9 # -0b1001 print(bin(x & 0xff)) print(format(x & 0xffff, 'x')) # 0b11110111 # fff7
- Artikel sing gegandhengan:Ngonversi angka lan string biner, octal, lan heksadesimal menyang lan saka siji liyane ing Python
dicokot flip:~operator
~conto bit flipping karo operator.
Inversi bitwise ora mung nilai saben bit sing dibalik. Nilai bali nalika nggunakake operator iki minangka nderek.~x
#ERROR!-(x+1)
-(x+1)
Nilai iki padha karo nimbang nilai input x minangka wangun pelengkap loro lan ngowahi kabeh bit.
Kaya kasebut ing ndhuwur, ing Python, nalika integer negatif diowahi kanggo senar binar nggunakake bin (), format (), etc., iku ora ing wangun nglengkapi loro, nanging ing Nilai Absolute karo tandha minus. Mulane, ngonversi ~x langsung menyang senar ora bakal ngasilake senar kanthi bit saka nilai asli dibalik.
x = 9 # 0b1001 print(~x) print(bin(~x)) # -10 # -0b1010
Nalika kita nindakake operasi AND lan nguripake menyang senar saka loro perwakilan nglengkapi, kita bisa ndeleng sing bit saka Nilai asli kuwalik.
Kajaba iku, contone, kanggo njupuk string bit sing 4-digit bit string kuwalik minangka (bit tandha tilar), nggunakake format () kanggo ngisi nul kanggo nilai ANDed minangka nderek04b'
print(bin(~x & 0xff)) print(format(~x & 0b1111, '04b')) # 0b11110110 # 0110
bit shift:<<,>>
Conto shift bit kiwa lan shift bit tengen nggunakake operator bit shift.
x = 9 # 0b1001 print(x << 1) print(bin(x << 1)) # 18 # 0b10010 print(x >> 1) print(bin(x >> 1)) # 4 # 0b100
Kanggo nilai negatif, bit tandha ditambahi lan pindah, lan tandha positif / negatif tetep padha. Nilai negatif minangka gambar saka garis 1s ing sisih kiwa.
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
Iku luwih apik kanggo mikir ing syarat-syarat strings saka loro ekspresi pelengkap, amarga mikir bab nomer ora cetha.