เราได้รับตัวเลขจำนวนเต็ม สมมติว่า num และภารกิจคือการคำนวณเลขฐานสองของตัวเลขก่อน จากนั้นจึงคำนวณชุดบิตทั้งหมดของตัวเลข
ชุดบิตในเลขฐานสองจะถูกแทนด้วย 1 เมื่อใดก็ตามที่เราคำนวณเลขฐานสองของค่าจำนวนเต็ม มันจะถูกสร้างขึ้นเป็นการรวมกันของ 0 และ 1 ดังนั้น ตัวเลข 1 จึงเรียกว่า set bit ในแง่ของคอมพิวเตอร์
ป้อนข้อมูล − จำนวนเต็ม =50
ผลผลิต − จำนวนเซตบิตทั้งหมดเป็นตัวเลข − 3
คำอธิบาย − การแสดงเลขฐานสองของตัวเลข 50 คือ 110010 และหากเราคำนวณเป็นตัวเลข 8 หลัก เลข 0 สองตัวจะถูกต่อท้ายในตอนต้น ดังนั้น เซตบิตทั้งหมดในตัวเลขคือ 3
ป้อนข้อมูล − จำนวนเต็ม =10
ผลผลิต − จำนวนเซตบิตทั้งหมดในจำนวนคือ − 2
คำอธิบาย − การแสดงเลขฐานสองของตัวเลข 10 คือ 00001010 และหากเราคำนวณเป็นตัวเลข 8 หลัก เลข 0 สี่ตัวจะถูกต่อท้ายในตอนต้น ดังนั้น เซตบิตทั้งหมดในตัวเลขคือ 2
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนตัวเลขในตัวแปรประเภทจำนวนเต็ม
-
ประกาศการนับตัวแปรเพื่อเก็บจำนวนชุดบิตของประเภท unsigned int
-
เริ่มวนซ้ำ FOR จาก i ถึง 1<<7 และ i> 0 และ i ถึง i / 2
-
ภายในลูป ตรวจสอบ num &1 ==TRUE แล้วพิมพ์ 1 อื่น ๆ พิมพ์ 0
-
เริ่มวนรอบในขณะที่คำนวณจำนวนบิตทั้งหมดจนถึงจำนวนไม่ใช่ 0
-
ภายในลูป set count =count + number &1 และ set number>>=1
-
พิมพ์จำนวน
ตัวอย่าง
#include<iostream> using namespace std; //Count total set bits in a number unsigned int bits(unsigned int number){ unsigned int count = 0; unsigned i; //display the total 8-bit number cout<<"8-bit digits of "<<number<<" is: "; for (i = 1 << 7; i > 0; i = i / 2){ (number & i)? cout<<"1": cout<<"0"; } //calculate the total set bits in a number while (number){ count += number & 1; number >>= 1; } cout<<"\nCount of total set bits in a number are: "<<count; } int main(){ int number = 50; bits(number); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
8-bit digits of 50 is: 00110010 Count of total set bits in a number are: 3