Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,987 questions

51,931 answers

573 users

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 193 views
1 answer 104 views
1 answer 98 views
1 answer 178 views
2 answers 180 views
2 answers 192 views
2 answers 155 views
...