Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับบิตไม่เซ็ตของตัวเลขใน C++


เราได้รับจำนวนเต็มสมมติว่า num และงานคือการคำนวณเลขไบนารีของตัวเลขก่อน แล้วคำนวณบิตไม่เซ็ต (unset bits) ทั้งหมดของตัวเลข

บิตไม่เซ็ตในตัวเลขไบนารีแทนด้วย 0 ทุกครั้งที่เราคำนวณตัวเลขไบนารีของค่าจำนวนเต็ม มันจะประกอบด้วย 0 และ 1 ดังนั้น ตัวเลข 0 จึงเรียกว่า unset bit ในทางคอมพิวเตอร์

อินพุต − int number = 50

เอาต์พุต − นับบิตไม่เซ็ตทั้งหมดในตัวเลขคือ − 3

คำอธิบาย − การแทนค่าไบนารีของตัวเลข 50 คือ 110010 และถ้าคำนวณเป็นตัวเลข 8 หลัก จะมี 0 เพิ่มอีกสองตัวด้านหน้า ดังนั้นบิตไม่เซ็ตทั้งหมดในตัวเลขคือ 3

อินพุต − int number = 10

เอาต์พุต − นับบิตไม่เซ็ตทั้งหมดในตัวเลขคือ: 6

คำอธิบาย − การแทนค่าไบนารีของตัวเลข 10 คือ 00001010 และถ้าคำนวณเป็นตัวเลข 8 หลัก จะมี 0 เพิ่มอีกสี่ตัวด้านหน้า ดังนั้นบิตไม่เซ็ตทั้งหมดในตัวเลขคือ 6

วิธีการที่ใช้ในโปรแกรมด้านล่าง

  • รับตัวเลขในตัวแปรประเภทจำนวนเต็ม

  • ประกาศตัวแปร count เพื่อเก็บจำนวนบิตเซ็ตทั้งหมดแบบ unsigned int

  • เริ่มลูป FOR จาก i = 1<<7 และ i > 0 และ i = i / 2

  • ภายในลูป ตรวจสอบ num & 1 == TRUE แล้วพิมพ์ 1 มิฉะนั้นพิมพ์ 0

  • ภายในลูป เพิ่มค่าจำนวนหลักทั้งหมดในตัวเลข

  • เริ่มลูป while เพื่อคำนวณจำนวนบิตทั้งหมดจนกว่าตัวเลขจะไม่เป็น 0

  • ภายในลูป ตั้ง count = count + number & 1 และตั้ง number >>=1

  • ตั้ง count เป็น จำนวนหลักทั้งหมดในตัวเลข - จำนวนบิตเซ็ตในตัวเลข

  • พิมพ์ count

ตัวอย่าง

#include<iostream> using namespace std; //Count total unset bits in a number unsigned int unset_bits(unsigned int number){    unsigned int total_digits = 0;    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";       total_digits++;    }    //calculate the total unset bits in a number    while (number){       count += number & 1;       number >>= 1;    }    count = total_digits - count;    cout<<"\nCount of total unset bits in a number are: "<<count; } int main(){    int number = 50;    unset_bits(number);    return 0; }

เอาต์พุต

ถ้าเรารันโค้ดด้านบนจะได้ผลลัพธ์ดังนี้ −

8-bit digits of 50 is: 00110010 Count of total set bits in a number are: 5