Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các bit chưa đặt của một số trong C ++

Chúng tôi được cung cấp một số nguyên, giả sử là num và nhiệm vụ trước tiên là tính toán chữ số nhị phân của một số và sau đó tính tổng các bit chưa đặt của một số.

Các bit chưa được đặt trong một số nhị phân được biểu thị bằng 0. Bất cứ khi nào chúng ta tính toán số nhị phân của một giá trị số nguyên thì nó được hình thành dưới dạng kết hợp của 0’s và 1’s. Vì vậy, chữ số 0 được gọi là bit chưa đặt trong điều kiện của máy tính.

Đầu vào - số int =50

Đầu ra - Tổng số bit chưa đặt trong một số là - 3

Giải thích - Biểu diễn nhị phân của một số 50 là 110010 và nếu chúng ta tính nó ở dạng số có 8 chữ số thì hai số 0 sẽ được thêm vào ở đầu. Vì vậy, tổng số bit chưa đặt trong một số là 3.

Đầu vào - int number =10

Đầu ra - Tổng số bit chưa đặt trong một số là:6

Giải thích - Biểu diễn nhị phân của số 10 là 00001010 và nếu chúng ta tính nó ở dạng số 8 chữ số thì bốn chữ số 0 sẽ được thêm vào ở đầu. Vì vậy, tổng số bit chưa đặt trong một số là 6.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập số vào một biến kiểu số nguyên

  • Khai báo một số biến để lưu trữ tổng số các bit đã đặt của kiểu unsigned int

  • Bắt đầu vòng lặp FOR từ i đến 1 <<7 và i> 0 và i đến i / 2

  • Bên trong vòng lặp, kiểm tra num &1 ==TRUE sau đó in 1 khác in 0

  • Trong vòng lặp, hãy tăng giá trị của tổng các chữ số trong một số.

  • Bắt đầu lặp trong khi để tính tổng số bit cho đến khi số không phải là 0

  • Bên trong vòng lặp, đặt count =count + number &1 và cũng đặt number>> =1

  • Đặt số đếm là tổng các chữ số trong một số - tổng số bit được đặt trong một số.

  • In số lượng

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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