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

2 Answers

0 votes
#include <stdio.h>

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) { 
  return (n + 1) & n;
} 
  
int main(int argc, char **argv) 
{
    int n = 15; 
     
    print_bits(n);
    print_bits(n + 1);
	print_bits((n + 1) & n);
	if (is_all_bits_set(n) == 0) {
		printf("Yes\n"); 
	}
	else  {
		printf("No\n"); 
	}
	
	n = 13;

    print_bits(n);
    print_bits(n + 1);
	print_bits((n + 1) & n);
	if (is_all_bits_set(n) == 0) {
		printf("Yes\n"); 
	}
	else  {
		printf("No\n"); 
	}
 
    return 0; 
}
     
       
/*
run:
     
1111
0000
0000
Yes
1101
1110
1100
No
  
*/

 



answered Mar 7, 2019 by avibootz
0 votes
#include <stdio.h>
 
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 argc, char **argv) 
{
    int n = 15; 
      
    print_bits(n);
    if (is_all_bits_set(n)) {
        printf("Yes\n"); 
    }
    else  {
        printf("No\n"); 
    }
     
    n = 13;
 
    print_bits(n);
    if (is_all_bits_set(n)) {
        printf("Yes\n"); 
    }
    else  {
        printf("No\n"); 
    }
  
    return 0; 
}
      
        
/*
run:
      
1111
Yes
1101
No
   
*/

 



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

Related questions

2 answers 217 views
1 answer 122 views
1 answer 124 views
1 answer 212 views
2 answers 215 views
2 answers 222 views
2 answers 184 views
...