論理和・論理積・排他的論理和

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

論理和論理積排他的論理和

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

        System.out.printf("A       = ");  print_bits(na);
        System.out.printf("NOT A   = ");  print_bits(~na);
        System.out.print('\n');

        System.out.printf("A       = ");  print_bits(na);
        System.out.printf("B       = ");  print_bits(nb);
        System.out.printf("A AND B = ");  print_bits(na & nb);
        System.out.print('\n');

        System.out.printf("A       = ");  print_bits(na);
        System.out.printf("B       = ");  print_bits(nb);
        System.out.printf("A OR B  = ");  print_bits(na | nb);
        System.out.print('\n');

        System.out.printf("A       = ");  print_bits(na);
        System.out.printf("B       = ");  print_bits(nb);
        System.out.printf("A XOR B = ");  print_bits(na ^ nb);
    }

    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 Lesson056
A = 00000000000000000011000000111001
NOT A = 11111111111111111100111111000110

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A AND B = 00000000000000000001000000110001

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A OR B = 00000000000000001111010000111001

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A XOR B = 00000000000000001110010000001000