Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm bit 0 trong biểu diễn nhị phân của số trong C++

Giới thiệu

Cho số nguyên không âm, đếm số bit 0 trong biểu diễn nhị phân 8-bit (đệm 0 ở đầu nếu cần).

Ví dụ

  • 50 = 00110010 (8-bit) → 3 bit 0 (tính cả 2 bit 0 đệm đầu)
  • 10 = 00001010 → 6 bit 0

Ý tưởng giải thuật

  1. Đếm tổng bit (8 bit cố định).
  2. Đếm bit 1: dùng n & 1 và dịch phải n >>= 1 cho đến khi n = 0.
  3. Bit 0 = tổng bit - bit 1.

Ví dụ triển khai (C++)

#include <iostream>
using namespace std;

int countUnsetBits8(int n) {
    int totalBits = 8;
    int setBits = 0;
    int temp = n;
    while (temp) {
        setBits += temp & 1;
        temp >>= 1;
    }
    return totalBits - setBits;
}

int main() {
    int n = 50;
    cout << "8-bit cua " << n << ": ";
    for (int i = 7; i >= 0; i--)
        cout << ((n >> i) & 1);
    cout << "\nSo bit 0: " << countUnsetBits8(n); // 3
    return 0;
}

Đầu vào

50

Đầu ra

8-bit cua 50: 00110010
So bit 0: 3