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