C++中計算未設定位的數量


給定一個整數,例如num,任務是首先計算該數字的二進位制位,然後計算該數字中未設定位的總數。

二進位制數中的未設定位用0表示。當我們計算整數的二進位制數時,它由0和1組成。因此,在計算機術語中,數字0被稱為未設定位。

輸入 − int number = 50

輸出 − 數字中未設定位的總數為:3

說明 − 數字50的二進位制表示為110010,如果我們將其計算為8位數字,則會在開頭新增兩個0。因此,數字中未設定位的總數為3。

輸入 − int number = 10

輸出 − 數字中未設定位的總數為:6

說明 − 數字10的二進位制表示為00001010,如果我們將其計算為8位數字,則會在開頭新增四個0。因此,數字中未設定位的總數為6。

下面程式中使用的方法如下:

  • 將數字輸入到整數型別的變數中

  • 宣告一個名為count的變數,用於儲存已設定位的總數,其型別為unsigned int

  • 從i到1<<7,i>0,i到i/2開始FOR迴圈

  • 在迴圈內,檢查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

更新於:2020年10月31日

637 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.