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

นับบิตที่ไม่ได้ตั้งค่าของตัวเลขใน C++


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

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

ป้อนข้อมูล − จำนวนเต็ม =50

ผลผลิต − จำนวนบิตที่ไม่ได้ตั้งค่าทั้งหมดในตัวเลขคือ − 3

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

ป้อนข้อมูล − จำนวนเต็ม =10

ผลผลิต − จำนวนบิตที่ยังไม่ได้ตั้งค่าทั้งหมดเป็นตัวเลข:6

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

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

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

  • ประกาศการนับตัวแปรเพื่อเก็บจำนวนชุดบิตของประเภท 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 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