Cho một số nguyên n, tôi muốn chuyển đổi tất cả các bit trong biểu diễn nhị phân của số đó trong phạm vi nói từ trên xuống dưới. Để làm điều này tôi thực hiện như sau [bit_string là một chuỗi chứa 1 và 0 và là một biểu diễn nhị phân của n]Lật bit trong python
for i in range(lower,upper+1):
n ^= (1 << len(bit_string)-1-i) #Toggle the ith bit
Sau đó, tôi cũng cần phải xác định đó được đưa ra một phạm vi, nói thấp hơn để phía trên, làm thế nào nhiều bit được đặt.Mã để thực hiện điều đó như sau:
number_of_ones = 0
for i in range(lower,upper+1):
if(n & (1 << len(bit_string)-1-i)): #Check the ith bit
number_of_ones+=1
Nhưng, nếu n rất lớn, tôi nghĩ các thuật toán này sẽ chậm. Có cách nào để làm cho hai hoạt động này nhanh hơn/hiệu quả hơn không?
cảm ơn
Bạn đang thực hiện thao tác lật bit, nhưng trên một chuỗi và bằng Python ... Điều này làm gì (trong ngữ cảnh lớn hơn)? Nếu bạn quan tâm đến tốc độ, tôi nghĩ rằng bạn đang đi về nó tất cả các sai. –
Nó là một vấn đề lập trình im làm việc trên:) ... tôi có nên sử dụng một số ngôn ngữ khác như nói C hoặc C + +? – Tom
Đây có phải là bài tập về nhà không? –