ビットシフト
明解C言語 入門編 > 7. 基本型 >
ビットシフト
PHP
<?php function count_bits($x) { $count = 0; while ($x) { if ($x & 1) $count++; $x = ($x >> 1) & ~(~0 << (PHP_INT_SIZE * 8) - 1); } return $count; } function int_bits() { return count_bits(~0); return count_bits(~0); } function print_bits($x) { for ($i = int_bits() - 1; $i >= 0; $i--) { print ((($x >> $i) & 1) ? '1' : '0'); } print "\n"; } $na = 12345; print "A = "; print_bits($na); print "A >> 1 = "; print_bits($na >> 1); print "A >> 2 = "; print_bits($na >> 2); print "A >> 3 = "; print_bits($na >> 3); print "A >> 4 = "; print_bits($na >> 4); print "\n"; print "A = "; print_bits($na); print "A << 1 = "; print_bits($na << 1); print "A << 2 = "; print_bits($na << 2); print "A << 3 = "; print_bits($na << 3); print "A << 4 = "; print_bits($na << 4); ?>
実行結果
L:\>php lesson_07_057.php
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