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

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

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

Python
import sys

def count_bits(x):
    count = 0
    while (x != 0):
        if (x & 1 != 0):
            count +=1
        x = (x >> 1) & ~(~0 << (sys.getsizeof(x) * 8));
    return count

def int_bits():
    return count_bits(~0)

def print_bits(x):
    for i in range(int_bits() - 1, -1,  -1):
        if ((x >> i) & 1) != 0:
            sys.stdout.write("1")
        else:
            sys.stdout.write("0")
    print

na = 12345
nb = 54321

sys.stdout.write("A       = ");  print_bits(na)
sys.stdout.write("NOT A   = ");  print_bits(~na)
print

sys.stdout.write("A       = ");  print_bits(na)
sys.stdout.write("B       = ");  print_bits(nb)
sys.stdout.write("A AND B = ");  print_bits(na & nb)
print

sys.stdout.write("A       = ");  print_bits(na)
sys.stdout.write("B       = ");  print_bits(nb)
sys.stdout.write("A OR B  = ");  print_bits(na | nb)
print

sys.stdout.write("A       = ");  print_bits(na)
sys.stdout.write("B       = ");  print_bits(nb)
sys.stdout.write("A XOR B = ");  print_bits(na ^ nb)

実行結果

N:\>python lesson_07_056.py
A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001
NOT A = 1111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111000110

A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001
B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001101010000110001
A AND B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110001

A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001
B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001101010000110001
A OR B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001111010000111001

A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001
B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001101010000110001
A XOR B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001110010000001000