/* 符号無し整数を左右にシフトした値が、 2のべき乗での乗算や除算と等しくなることを 確認するプログラムを作成せよ。 */ #include int main(void) { unsigned no, no1, no2; int i, x; printf("非負の整数を入力してください:"); scanf("%u", &no); printf("何ビットシフト(乗除)しますか:"); scanf("%d", &x); no1 = no2 = no; for( i = 0; i < x; i++ ) { no1 <<= 1; no2 *= 2; } printf("左にシフトした数:%u\n", no1); printf("乗算した数:%u\n", no2); no1 = no2 = no; for( i = 0; i < x; i++ ) { no1 >>= 1; no2 /= 2; } printf("右にシフトした数:%u\n", no1); printf("除算した数:%u\n", no2); return 0; }