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

Đếm số bit đã đặt trong một số nguyên 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 chữ số nhị phân của một số và sau đó tính tổng số bit đã đặt của một số.

Các bit tập hợp trong một số nhị phân được biểu diễn bằng 1. 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 tạo thành dưới dạng kết hợp của 0 và 1. Vì vậy, chữ số 1 được gọi là bit set trong các điều kiện của máy tính.

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

Đầu ra - Đếm tổng số bit đặ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 được thiết lập trong một số là 3.

Đầu vào - int number =10

Đầu ra - Đếm tổng số bit đặt trong một số là - 2

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 được thiết lập trong một số là 2.

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

  • 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

  • In số lượng

Ví dụ

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