5

Tôi đã nhìn thấy rất nhiều câu hỏi về việc đếm số bit thiết lập trong đầu vào insert type of, nhưng tại sao lại hữu ích?Tại sao lại hữu ích khi đếm số bit?

Đối với những người tìm kiếm các thuật toán về đếm bit, xem ở đây:

  1. Counting common bits in a sequence of unsigned longs
  2. Fastest way to count number of bit transitions in an unsigned int
  3. How to count the number of set bits in a 32-bit integer?

Trả lời

5

Bạn có thể xem một chuỗi các bit như một set, với 1 đại diện cho thành viên của tập hợp cho phần tử tương ứng. Do đó, số bit cho bạn số population count của bộ này.

Ứng dụng thực tế bao gồm mã nén, mã hóa và sửa lỗi. Xem ví dụ wikipedia.org/wiki/Hamming_weightwikipedia.org/wiki/Hamming_distance.

0

Nếu bạn đang lăn lược đồ chẵn lẻ của riêng mình, bạn có thể muốn đếm số bit. (Nói chung, tất nhiên, tôi muốn sử dụng của người khác.) Nếu bạn đang mô phỏng một máy tính cũ và muốn theo dõi tốc độ chạy trên bản gốc nhanh như thế nào, một số có hướng dẫn nhân với tốc độ thay đổi theo số 1 bit.

Tôi không thể nghĩ bất cứ lúc nào tôi muốn làm điều đó trong mười năm qua, vì vậy tôi nghi ngờ đây là một bài tập lập trình nhiều hơn là nhu cầu thực tế.

+0

Bạn có thể tính chẵn lẻ trực tiếp với các hoạt động ít hơn cho một số dân (trừ khi CPU của bạn có ' POPCNT' hoặc tương tự). –

0

Trong một kiểu thời trang mỉa mai, nó rất hữu ích cho một câu hỏi phỏng vấn vì nó đòi hỏi một số tư duy chi tiết thấp và dường như không được dạy như một thuật toán chuẩn trong các khóa học sci comp.

0

Một số người thích sử dụng bitmap để biểu thị sự hiện diện/vắng mặt của "nội dung". Có một hack đơn giản để cô lập 1 bit ít quan trọng nhất trong một từ, chuyển đổi nó thành một trường của những cái ở các bit bên dưới nó, và sau đó bạn có thể tìm thấy số bit bằng cách đếm các bit 1-bit.

countbits((x XOR (x-1)))-1; 

Xem nó hoạt động.

Let x =  00101100 
Then x-1 = 00101011 
x XOR x-1 = 00000111 

Trong đó có 3 bit thiết lập, vì vậy cắn 2 là kém quan trọng 1-bit trong từ gốc

Các vấn đề liên quan