ビットシフト
明解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 sys.stdout.write("A = "); print_bits(na) sys.stdout.write("A >> 1 = "); print_bits(na >> 1) sys.stdout.write("A >> 2 = "); print_bits(na >> 2) sys.stdout.write("A >> 3 = "); print_bits(na >> 3) sys.stdout.write("A >> 4 = "); print_bits(na >> 4) print sys.stdout.write("A = "); print_bits(na) sys.stdout.write("A << 1 = "); print_bits(na << 1) sys.stdout.write("A << 2 = "); print_bits(na << 2) sys.stdout.write("A << 3 = "); print_bits(na << 3) sys.stdout.write("A << 4 = "); print_bits(na << 4)
実行結果
N:\>python lesson_07_057.py
A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001
A >> 1 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000011100
A >> 2 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000001110
A >> 3 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111
A >> 4 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000011A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001
A << 1 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000110000001110010
A << 2 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001100000011100100
A << 3 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001000
A << 4 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000110000001110010000