count set bit problem in java

 

Method 1:

public class j07_count_set_bit {

    static int countSetBits(int n) {
        int count = 0;
        while (n != 0) {
            if (n % 2 != 0) // (n & 1 == 1) res++;    // res = res + (n & 1)
                count++;
            n = n / 2;      // n = n >> 1;
        }
        return count;
    }

    public static void main(String args[]) {
        int i = 9;
        System.out.println(countSetBits(i));
    }
}


Method 2:

public class j07_count_set_bit {

    static int countSetBits(int n) {
        int count = 0;
        while (n > 0) {
            n &= (n - 1);
            count++;
        }
        return count;
    }

    public static void main(String args[]) {
        int i = 9;
        System.out.println(countSetBits(i));
    }
}


Method 3:

public class j07_count_set_bit {

    static int[] table = new int[256];
    public static void initialize() {
        table[0] = 0;
        for (int i = 0; i < 256; i++) {
            table[i] = (i & 1) + table[i / 2];
        }
    }

    public static int countSetBits(int n) {
        return table[n & 0xff] +
                table[(n >> 8) & 0xff] +
                table[(n >> 16) & 0xff] +
                table[n >> 24];
    }
    public static void main(String[] args) {
        initialize();
        int n = 9;
        System.out.println(countSetBits(n));
    }
}


Comments

Popular Post

Write the definition for a class called complex that has floating point data members for storing real and imaginary parts. The class has the following member functions: void set(float, float) to set the specified value in object void disp() to display complex number object complex sum(complex) to sum two complex numbers & return complex number 1. Write the definitions for each of the above member functions. 2. Write main function to create three complex number objects. Set the value in two objects and call sum() to calculate sum and assign it in third object. Display all complex numbers.

Write the definition for a class called Rectangle that has floating point data members length and width. The class has the following member functions: void setlength(float) to set the length data member void setwidth(float) to set the width data member float perimeter() to calculate and return the perimeter of the rectangle float area() to calculate and return the area of the rectangle void show() to display the length and width of the rectangle int sameArea(Rectangle) that has one parameter of type Rectangle. sameArea returns 1 if the two Rectangles have the same area, and returns 0 if they don't. 1. Write the definitions for each of the above member functions. 2. Write main function to create two rectangle objects. Set the length and width of the first rectangle to 5 and 2.5. Set the length and width of the second rectangle to 5 and 18.9. Display each rectangle and its area and perimeter. 3. Check whether the two Rectangles have the same area and print a message indicating the result. Set the length and width of the first rectangle to 15 and 6.3. Display each Rectangle and its area and perimeter again. Again, check whether the two Rectangles have the same area and print a message indicating the result.