ビット演算 > 右シフト
演習問題
- int x = 100; を宣言し、x を1ビット右シフトした値を表示し、値が半分になっていることを確認しなさい
- int x = -100; を宣言し、x を1ビット右シフトした値を表示し、値が半分になっていることを確認しなさい
- int x; に何らかの値が入っているとき、中身のビットを逆順にするコードを書きなさい。例:0xff00aa03 → 0xc05500ff;
int x = 100; cout << (x >> 1) << "\n";
int x = -100; cout << (x >> 1) << "\n";
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;