Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C/C++ นับชุดบิตเป็นจำนวนเต็ม?


ที่นี่เราจะดูว่าเราสามารถตรวจสอบจำนวนบิตชุดในจำนวนเต็มได้อย่างไร ชุดบิตคือ 1 ในการแทนค่าเลขฐานสองของตัวเลข ตัวอย่างเช่น หมายเลข 13 มีสามชุดบิต 1101 ดังนั้นการนับจะเป็น 3

เพื่อแก้ปัญหานี้ เราจะเลื่อนตัวเลขไปทางขวา และถ้า LSb เป็น 1 ให้เพิ่มจำนวนขึ้น จนกว่าตัวเลขจะกลายเป็น 0 มันจะทำงาน

อัลกอริทึม

countSetBit()

begin
   count := 0
   while count is not 0, do
      if LSb of n is set, then
         count := count + 1
      end if
         n := n after shifting 1 bit to right
   done
   return count
end

ตัวอย่าง

#include<iostream>
using namespace std;
int count_set_bit(int n) {
   int count = 0;
   while(n != 0) {
      if(n & 1 == 1) {
         count++;
      }
      n = n >> 1; //right shift 1 bit
   }
   return count;
}
int main() {
   int n;
   cout << "Enter a number: ";
   cin >> n;
   cout << "Number of set bits: " << count_set_bit(n);
}

ผลลัพธ์

Enter a number: 29
Number of set bits: 4

โปรแกรมนี้จะทำงานใน C และสร้างเอาต์พุต แต่เมื่อเราต้องการคอมไพล์ใน C++ มันจะส่งคืนข้อผิดพลาดระหว่างเวลาคอมไพล์ จะบอกว่ามีการโต้แย้งมากเกินไป