論理和・論理積・排他的論理和
明解C言語 入門編 > 7. 基本型 >
論理和・論理積・排他的論理和
Ruby
def count_bits(x) count = 0 while (x != 0) count += 1 if (x & 1 != 0) x = (x >> 1) & ~(~0 << (x.size * 8)) end return count end def int_bits return count_bits(~0) end def print_bits(x) (int_bits - 1).downto(0) do |i| print(((x >> i) & 1) != 0 ? '1' : '0') end puts "" end na = 12345 nb = 54321 print "A = "; print_bits(na) print "NOT A = "; print_bits(~na) puts "" print "A = "; print_bits(na) print "B = "; print_bits(nb) print "A AND B = "; print_bits(na & nb) puts "" print "A = "; print_bits(na) print "B = "; print_bits(nb) print "A OR B = "; print_bits(na | nb) puts "" print "A = "; print_bits(na) print "B = "; print_bits(nb) print "A XOR B = "; print_bits(na ^ nb)
実行結果
L:\>ruby l:\lesson_07_056.rb
A = 000000000000000000011000000111001
NOT A = 111111111111111111100111111000110A = 000000000000000000011000000111001
B = 000000000000000001101010000110001
A AND B = 000000000000000000001000000110001A = 000000000000000000011000000111001
B = 000000000000000001101010000110001
A OR B = 000000000000000001111010000111001A = 000000000000000000011000000111001
B = 000000000000000001101010000110001
A XOR B = 000000000000000001110010000001000