How to check if all bits of a number are set in C++

2 Answers

0 votes
#include <iostream>

using namespace std;

void print_bits(unsigned int n) { 
    for (int i = 7; i >= 0; i--)
       cout << ((n >> i) & 1);
    cout << endl;
}
 
unsigned int is_all_bits_set(unsigned int n) { 
  return (n + 1) & n;
} 

int main() {
	int n = 15; 
      
    print_bits(n);
    print_bits(n + 1);
    print_bits((n + 1) & n);
    if (is_all_bits_set(n) == 0) {
        cout << "Yes" << endl; 
    }
    else  {
        cout << "No" << endl; 
    }
     
    n = 13;
 
    print_bits(n);
    print_bits(n + 1);
    print_bits((n + 1) & n);
    if (is_all_bits_set(n) == 0) {
        cout << "Yes" << endl; 
    }
    else  {
        cout << "No" << endl; 
    }
    
    return 0;
}


/*
run:

1111
0000
0000
Yes
1101
1110
1100
No

*/

 



answered Mar 7, 2019 by avibootz
edited Mar 9, 2019 by avibootz
0 votes
#include <iostream>
 
using namespace std;
 
void print_bits(unsigned int n) { 
    for (int i = 3; i >= 0; i--)
       printf("%d", (n >> i) & 1);
    printf("\n");
}
  
unsigned int is_all_bits_set(unsigned int n) { 
   while (n > 0) { 
        if ((n & 1) == 0) 
            return 0; 
        n = n >> 1; 
    } 
    return 1;
} 
 
int main() {
    int n = 15; 
       
    print_bits(n);
    if (is_all_bits_set(n) == 0) {
        cout << "Yes" << endl; 
    }
    else  {
        cout << "No" << endl; 
    }
      
    n = 13;
  
    print_bits(n);
    if (is_all_bits_set(n) == 0) {
        cout << "Yes" << endl; 
    }
    else  {
        cout << "No" << endl; 
    }
     
    return 0;
}
 
 
/*
run:
 
1111
No
1101
Yes
 
*/

 



answered Mar 7, 2019 by avibootz
edited Mar 7, 2019 by avibootz

Related questions

2 answers 177 views
1 answer 110 views
1 answer 111 views
1 answer 198 views
2 answers 195 views
2 answers 206 views
2 answers 165 views
...