ビットシフト
明解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 = 00000000000000000000001100000011A = 00000000000000000011000000111001
A << 1 = 00000000000000000110000001110010
A << 2 = 00000000000000001100000011100100
A << 3 = 00000000000000011000000111001000
A << 4 = 00000000000000110000001110010000