このエントリーをはてなブックマークに追加

ビット演算 > 左シフト
Copyright (C) 2015 by Nobuhide Tsuda

ビット演算 > 左シフト

演習問題

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

まとめ・参考