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

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

ビット演算 > 右シフト

演習問題

  1. int x = 100; を宣言し、x を1ビット右シフトした値を表示し、値が半分になっていることを確認しなさい
  2.     int x = 100;
        cout << (x >> 1) << "\n";
    
  3. int x = -100; を宣言し、x を1ビット右シフトした値を表示し、値が半分になっていることを確認しなさい
  4.     int x = -100;
        cout << (x >> 1) << "\n";
    
  5. int x; に何らかの値が入っているとき、中身のビットを逆順にするコードを書きなさい。例:0xff00aa03 → 0xc05500ff;
  6.     int x = 何らかの値;
        int t = 0;       // 結果を一時的に格納する場所
        unsigned int m2 = 1;
        for(unsigned int mask = 0x80000000; mask != 0; mask>>=1,m2<<=1) {
          if( (x & mask) != 0 ) {     // x の m1 ビットが立っている場合
                t |= m2;
          }
        }
        x = t;
    

まとめ・参考