简体   繁体   中英

Error: Invalid operands to binary conversion(bitset<8> and int)

How to iterate through a binary number in c++?

In the mentioned function I'm getting

invalid operands to binary conversion (bitset<8> and int)

This is the function in my code, which is getting the stated error

int value(int x)
{
    int temp=0,counter=0;
    bitset<8> i(x);
    while (i != 0) {
       temp = i % 10;
       if(temp == 1) {
           counter++;
       }
       i = i/10;
  }
  return counter;
}

To count the number of 1's in the first 8 bits of x:

int value(int x)
{
  return bitset<8>(x).count();
}

To count all the bits:

int value(int x)
{
  return bitset<sizeof(x) * CHAR_BIT>(x).count();
}

If you have to use a loop solution: (Adaption to your solution with available functions)

int value(int x)
{
    int counter=0;
    bitset<8> i(x);
    while (i != 0) {
       if(i[0] == 1) {
           counter++;
       }
       i >>= 1;
  }
  return counter;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM