Computer >> Máy Tính >  >> Lập trình >> Python

Toán tử Bitwise trong Python

Toán tử bitwise hoạt động trên các bit và thực hiện thao tác từng bit. Giả sử nếu a =60; và b =13; Bây giờ ở định dạng nhị phân, giá trị của chúng sẽ lần lượt là 0011 1100 và 0000 1101. Bảng sau liệt kê các toán tử bitwise được ngôn ngữ Python hỗ trợ với một ví dụ cho mỗi toán tử trong đó, chúng tôi sử dụng hai biến ở trên (a và b) làm toán hạng -

 a =0011 1100b =0000 1101 ----------------- a &b =0000 1100a | b =0011 1101a ^ b =0011 0001 ~ a =1100 0011 

Có các toán tử Bitwise sau được ngôn ngữ Python hỗ trợ.

Sr.No Toán tử &Mô tả Ví dụ
1 &Binary AND
Toán tử sao chép một bit vào kết quả nếu nó tồn tại trong cả hai toán hạng
(a &b) (nghĩa là 0000 1100)
2 | Nhị phân HOẶC
Nó sao chép một chút nếu nó tồn tại trong một trong hai toán hạng.
(a | b) =61 (nghĩa là 0011 1101)
3 ^ XOR nhị phân
Nó sao chép bit nếu nó được đặt trong một toán hạng nhưng không phải cả hai.
(a ^ b) =49 (nghĩa là 0011 0001)
4 ~ Binary OnesComplement
Nó là một ngôi và có tác dụng 'lật' các bit.
(~ a) =-61 (có nghĩa là 1100 0011 ở dạng phần bù của 2 do một số nhị phân có dấu.
5 <
Giá trị toán hạng bên trái được di chuyển sang trái bằng số bit được chỉ định bởi toán hạng bên phải.
a <<2 =240 (nghĩa là 1111 0000)
6 >> Shift Phải nhị phân
Giá trị toán hạng bên trái được di chuyển sang phải bằng số bit được chỉ định bởi toán hạng bên phải.
a>> 2 =15 (nghĩa là 0000 1111)
7 ** =Số mũ VÀ
Thực hiện phép tính lũy thừa (lũy thừa) trên các toán tử và gán giá trị cho toán hạng bên trái
c ** =a tương đương với c =c ** a
8 // =Phân chia tầng
Nó thực hiện phân chia tầng trên các toán tử và gán giá trị cho toán hạng bên trái
c // =a tương đương với c =c // a

Ví dụ

 #! / usr / bin / pythona =60 # 60 =0011 1100b =13 # 13 =0000 1101c =0c =a &b; # 12 =0000 1100print "Dòng 1 - Giá trị của c là", cc =a | b; # 61 =0011 1101print "Dòng 2 - Giá trị của c là", cc =a ^ b; # 49 =0011 0001print "Dòng 3 - Giá trị của c là", cc =~ a; # -61 =1100 0011print "Dòng 4 - Giá trị của c là", cc =a <<2; # 240 =1111 0000print "Dòng 5 - Giá trị của c là", cc =a>> 2; # 15 =0000 1111print "Dòng 6 - Giá trị của c là", c 

Đầu ra

Khi bạn thực hiện chương trình trên, nó tạo ra kết quả sau -

 Dòng 1 - Giá trị của c là 12 Dòng 2 - Giá trị của c là 61 Dòng 3 - Giá trị của c là 49 Dòng 4 - Giá trị của c là -61 Dòng 5 - Giá trị của c là 240 Dòng 6 - Giá trị của c là 15