Give a very good method to count the number of ones in a 32
bit number.
(caution: looping through testing each bit is not a solution)




Answers were Sorted based on User's Feedback



Give a very good method to count the number of ones in a 32 bit number. (caution: looping through ..

Answer / raghuram

#include<iostream.h>
#include<conio.h>
/*no. of 1's in no. of 1's steps*/
int count(unsigned long int n)
{
int count=0;
while(n)
{
count++;
n=n&n-1;
}
return count ;
}

Is This Answer Correct ?    41 Yes 26 No

Give a very good method to count the number of ones in a 32 bit number. (caution: looping through ..

Answer / vijay

#include<stdio.h>
main()
{
int x=123,i=0;
while(x)
{
x=x&(x-1);
i++;
}
printf("Number of set bits are %d \n",i);
}

Is This Answer Correct ?    24 Yes 9 No

Give a very good method to count the number of ones in a 32 bit number. (caution: looping through ..

Answer / xyz

main()
{
int i=1177;
int j=0;
while(i>0)
{
if((i%2)!=0)
j++;
i=i/2;
}
printf("The number of one is %d\n", j);
}

Is This Answer Correct ?    12 Yes 6 No




Give a very good method to count the number of ones in a 32 bit number. (caution: looping through ..

Answer / lawrence

@Turk
your solution is O(n) not O(logn). your algorithm still
counts each zeros and ones.

Is This Answer Correct ?    2 Yes 1 No

Give a very good method to count the number of ones in a 32 bit number. (caution: looping through ..

Answer / sunny arora

/* This is a table which will contain number of ones
corrosponding to number value */
static int bits_in_char [256] ;

int bitcount (unsigned int n)
{
// works only for 32-bit ints

return bits_in_char [n & 0xffu]
+ bits_in_char [(n >> 8) & 0xffu]
+ bits_in_char [(n >> 16) & 0xffu]
+ bits_in_char [(n >> 24) & 0xffu] ;
}

Is This Answer Correct ?    9 Yes 9 No

Give a very good method to count the number of ones in a 32 bit number. (caution: looping through ..

Answer / turk

Here is an O(logn) solution

#include<stdio.h>

int numberOfOnesByte(unsigned char c, int length){
if (c==0)
return 0;
if (c==1)
return 1;
unsigned char left, right;
int lengthP = length/2;
left = c>>lengthP;
right = c-(left<<lengthP);
return numberOfOnesByte(left,length-lengthP)+numberOfOnesByte(right,lengthP);
}
int numberOfOnes(unsigned char *array, int start, int end, int length){
if(length==1){
return numberOfOnesByte(array[start],8);
} else {
int lengthP = length/2;
return numberOfOnes(array,start,start+lengthP-1,lengthP)+
numberOfOnes(array,start+lengthP,end,length-lengthP);
}
}
int main(){
unsigned char array[8] = {0xFF,0XAA,0xFF,0XAA,0xFF,0XAA,0xFF,0XAA};
printf("number of bits %d\n",numberOfOnes(array,0,7,8));
return 0;
}

Is This Answer Correct ?    3 Yes 5 No

Give a very good method to count the number of ones in a 32 bit number. (caution: looping through ..

Answer / pgmrsf

static void NumOfOnes(uint n)
{
int c = 0;
for (int i=0; i<10; i++)
{
if ((n & (int)Math.Pow(2, i)) == (int)Math.Pow(2,
i))
{
c++;
}
}
Console.WriteLine("{0}", c);
}

Is This Answer Correct ?    4 Yes 7 No

Post New Answer



More C Code Interview Questions

How do I write a program to print proper subset of given string . Eg :input: abc output:{},{a},{b},{c},{a,b},{a,c},{b,c}, {a,b,c}.I desperately need this program please mail me to saravana6m@gmail.com

11 Answers   Infosys, Deshaw,


int swap(int *a,int *b) { *a=*a+*b;*b=*a-*b;*a=*a-*b; } main() { int x=10,y=20; swap(&x,&y); printf("x= %d y = %d\n",x,y); }

1 Answers  


Finding a number which was log of base 2

1 Answers   NetApp,


#include<stdio.h> main() { FILE *ptr; char i; ptr=fopen("zzz.c","r"); while((i=fgetch(ptr))!=EOF) printf("%c",i); }

1 Answers  


write a c-program to display the time using FOR loop

3 Answers   HCL,






main ( ) { static char *s[ ] = {“black”, “white”, “yellow”, “violet”}; char **ptr[ ] = {s+3, s+2, s+1, s}, ***p; p = ptr; **++p; printf(“%s”,*--*++p + 3); }

1 Answers  


write a program for area of circumference of shapes

0 Answers  


main() { int i = 258; int *iPtr = &i; printf("%d %d", *((char*)iPtr), *((char*)iPtr+1) ); }

1 Answers  


What is the subtle error in the following code segment? void fun(int n, int arr[]) { int *p=0; int i=0; while(i++<n) p = &arr[i]; *p = 0; }

1 Answers  


to remove the repeated cahracter from the given caracter array. i.e.., if the input is SSAD output should of SAD

6 Answers   Synergy,


# include <stdio.h> int one_d[]={1,2,3}; main() { int *ptr; ptr=one_d; ptr+=3; printf("%d",*ptr); }

1 Answers  


Program to find the largest sum of contiguous integers in the array. O(n)

11 Answers  






Categories