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
What is header file definition?
Array is an lvalue or not?
Difference between macros and inline functions? Can a function be forced as inline?
What are the functions to open and close file in c language?
How is null defined in c?
When should a far pointer be used?
Write a program which returns the first non repetitive character in the string?
Is python a c language?
What is calloc() function?
c program for searching a student details among 10 student details
What is the purpose of clrscr () printf () and getch ()?
What are logical errors and how does it differ from syntax errors?
Explain enumerated types in c language?
What does c value mean?
What are lookup tables in c?