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

Số đếm trong Python đặt các bit trong một phạm vi?

Một số dương nhất định khi được chuyển đổi thành nhị phân, có một số setbit. Các bit tập hợp trong một số nhị phân được biểu thị bằng 1. Trong bài viết này, chúng ta sẽ xem cách lấy số lượng các bit set trong một số nhất định sau khi nó được chuyển đổi thành giá trị nhị phân.

Sử dụng thùng và cắt

Trong ví dụ dưới đây, chúng tôi lấy một số và áp dụng hàm bin để nhận giá trị nhị phân. Sau đó, chúng tôi cắt nó để loại bỏ các tiền tố được thêm vào một số nhị phân và sau đó áp dụng hàm phạm vi để lấy coutn của các setbit.

Ví dụ

 def SetBits_cnt (n, l, r):bin_val =bin (n) # Xóa tiền tố '0b' trong chuyển đổi bin_val bin_val =bin_val [2:] print (bin_val) # ngược chuỗi bin_val =bin_val [-1 ::-1] # đếm tất cả bit đặt '1' bắt đầu từ chỉ mục l-1 print (len ([bin_val [i] for i in range (l - 1, r) if bin_val [i] =='1'])) SetBits_cnt (83,1,6) 

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

 10100113 

Sử dụng bitwise

Toán tử bitwise cũng có thể được sử dụng để lấy các setbit. Trong ví dụ dưới đây, trước tiên chúng ta áp dụng toán tử bitwise xem xét phạm vi và sau đó chuyển nó cho một hàm khác chỉ đếm các bit đã đặt.

Ví dụ

 def trackBitsInRange (n, l, r):# using bitwise operator bit_num =((1 < 

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

 3