ビットシフト
明解C言語 入門編 > 7. 基本型 >
ビットシフト
C
#include <stdio.h>int count_bits(unsigned x)
{
int count = 0;
while (x)
{
if (x & 1u) count++;
x >>= 1;
}
return count;
}int int_bits(void)
{
return count_bits(~0u);
}void print_bits(unsigned x)
{
int i;
for (i = int_bits() - 1; i >= 0; i--)
putchar(((x >> i) & 1u) ? '1' : '0');putchar('\n');
}int main(int argc, char* argv[])
{
unsigned na = 12345;printf("A = "); print_bits(na);
printf("A >> 1 = "); print_bits(na >> 1);
printf("A >> 2 = "); print_bits(na >> 2);
printf("A >> 3 = "); print_bits(na >> 3);
printf("A >> 4 = "); print_bits(na >> 4);
putchar('\n');printf("A = "); print_bits(na);
printf("A << 1 = "); print_bits(na << 1);
printf("A << 2 = "); print_bits(na << 2);
printf("A << 3 = "); print_bits(na << 3);
printf("A << 4 = "); print_bits(na << 4);return 0;
}
実行結果
R:\>lesson057\project1.exe
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