ビットシフト

明解C言語 入門編 > 7. 基本型 >

ビットシフト

Java
class Lesson057 {
    public static void main(String[] args) {
        int na = 12345;

        System.out.printf("A       = ");  print_bits(na);
        System.out.printf("A >> 1  = ");  print_bits(na >> 1);
        System.out.printf("A >> 2  = ");  print_bits(na >> 2);
        System.out.printf("A >> 3  = ");  print_bits(na >> 3);
        System.out.printf("A >> 4  = ");  print_bits(na >> 4);
        System.out.print('\n');

        System.out.printf("A       = ");  print_bits(na);
        System.out.printf("A << 1  = ");  print_bits(na << 1);
        System.out.printf("A << 2  = ");  print_bits(na << 2);
        System.out.printf("A << 3  = ");  print_bits(na << 3);
        System.out.printf("A << 4  = ");  print_bits(na << 4);

    }

    static void print_bits(int x)
    {
        int i;
        for (i = int_bits() - 1; i >= 0; i--)
            System.out.print(((x >>> i) & 1) != 0 ? '1' : '0');

        System.out.print('\n');
    }

    static int int_bits()
    {
        return count_bits(~0);
    }

    static int count_bits(int x)
    {
        int count = 0;
        while (x != 0)
        {
            if ((x & 1) != 0) count++;
            x >>>= 1;
        }
        return count;
    }
}

実行結果

L:\>java Lesson057
A = 00000000000000000011000000111001
A >> 1 = 00000000000000000001100000011100
A >> 2 = 00000000000000000000110000001110
A >> 3 = 00000000000000000000011000000111
A >> 4 = 00000000000000000000001100000011

A = 00000000000000000011000000111001
A << 1 = 00000000000000000110000001110010
A << 2 = 00000000000000001100000011100100
A << 3 = 00000000000000011000000111001000
A << 4 = 00000000000000110000001110010000