ビット演算 > 左シフト
演習問題
- int x = 100; を宣言し、x を1ビット左シフトした値を表示し、値が2倍になっていることを確認しなさい。
- char c = 5; を宣言し、c <<= 6 を実行すると、c の値はいくつになるかを事前に予想してから、結果を確かめなさい。
- int x; に何か数値が入っているとき、掛け算を使わず、左シフトを使って x を10倍にするコードを書きなさい。
int x = 100; cout << (x << 1) << "\n";
char c = 5; c <<= 6; // 0b101 を6回左シフトすると 0b101000000 だが // 9bit 目はオーバーフローするので 0b01000000 (10進数で言えば 64) cout << (int)c << "\n";
// 10倍 は 8倍+2倍 なので int x = 何らかの値; x = (x<<3) + (x<<1); cout << x << "\n";