how do u find out the number of 1's in the binary
representation of a decimal number without converting it
into binary(i mean without dividing by 2 and finding out
the remainder)? three lines of c code s there it
seems...can anyone help
Answer Posted / krishna
The above solutions will not work for negative numbers.
if a negative number is right shifted, the most significant bit will become 1. so the number never becomes zero.
The following will work for both +ve and -ve numbers.
#include <stdio.h>
int main(int argc, char *argv[]) {
int count = 0;
int no = 3;
int x = 0x01;
if ( argc > 1) {
no = atoi(argv[1]);
}
while ( x != 0) {
if( no & x ) {
count++;
}
x <<= 1;
}
printf( "number: %d , no.of 1s in it: %d\n", no, count);
return 0;
}
Is This Answer Correct ? | 1 Yes | 2 No |
Post New Answer View All Answers
Devise a program that inputs a 3 digit number n and finds out whether the number is prime or not. Find out its factors.
What is register variable in c language?
What is the difference between āgā and āgā in C?
What are local static variables? How can you use them?
Why do we use namespace feature?
How do you define a function?
What are logical errors and how does it differ from syntax errors?
What are reserved words?
Explain what is wrong with this program statement?
What is a class c rental property?
How do I get a null pointer in my programs?
How many levels of indirection in pointers can you have in a single declaration?
What is array in c with example?
What is the use of volatile?
What is the importance of c in your views?