答えて
すべてのビットを完全に回復することはできません。
B << 3
左に3ビットシフトし、ループしません。これは、Bの上位3ビットの状態が消去されることを意味 - あなたがそれらを知っている限り、あなたはBを回復することはできません
例:
10101101 << 3
Turns: 10101101
^---^
Into: 01101000
^---^
上位3ビットが失われ、下の3つは0で埋められます。削除されたデータは削除されます。
| 0x07
は(111
で)下の3つのビットを埋め、あなたがシフトしていない場合でも、あなたはそれらのビットが回収不能作り、111
で最下位の3ビットを消去することと思います。それは論理和の代わりにXORされた場合
今は、別のXORと、回復するだろう:((A^B)^B) == A
A | same-value
はができないため、
A^same-value
は別のA^same-value
でを元に戻すことができます他とやり直しますA | same-value
A | same-value
は元に戻すことはできませんA & same-value
しかし、シフトがXORされていても(まだそうではないにしても)、問題が発生します。 、与えられた
正解、あなたは上位3ビットを失う。初期の関数が左回転に変更されたとしても、 '|とにかく右端の3ビットを設定しています。 – Anthony
は
B = 0b00000000
B = 0b00100000
//...
B = 0b11100000
あなたは同じA
を得ることができます(デモのみが、バイナリ形式のため0b
を使用して、一例として、8ビットB
を使用して)ので、私はあなたが計算を逆にすることができないと思います左端の3ビットが失われます。
- 1. ビット単位でのシフト
- 2. ビット単位のシフト精度
- 3. charのビット単位シフト配列
- 4. ビット単位のシフトとインクリメントで減算を実装する
- 5. Cでのビット操作 - 最上位ビットを削除するための左シフト
- 6. C++ビットごとの左シフト32
- 7. ビット単位の演算子とシフトの問題
- 8. ビット単位のシフト動作uint64_tを変数
- 9. ビットを左にシフトすると左が1になり、計算方法は?
- 10. C++でboolをビット単位でシフトできますか?
- 11. C#を単位テストに代入する
- 12. C#のビット単位のANDの逆数は何ですか?
- 13. ビット単位とComparator.comparing
- 14. 2の累乗で除算をビット単位でシフトする方法は?
- 15. LC3アセンブリビット単位の右シフト
- 16. 右シフトと左シフト(SLL/SRL)
- 17. TSQLビット単位のNOTビットを反転
- 18. 複数の左の左シフトと操作
- 19. 逆シリアル化で値を代入する代入リストの代入
- 20. ビット単位の10による除算
- 21. バイト単位でビット単位でインクリメント(C#)
- 22. Doctrine2 Querybuilderのビット単位で
- 23. JavaScriptビット単位のマスク
- 24. ルアの「ビット単位AND」
- 25. GCCビット単位の属性
- 26. ビット単位のオーバーフローチェックin c
- 27. ビット単位のモジュラス計算
- 28. ビット単位の操作:FitsBits
- 29. ビット単位のbitmanipulationパズル
- 30. ByteStringのビット単位操作
左に3をシフトし、下位の3ビットを1に設定していますか? 'B =(A >> 3)'の何が間違っていますか? (あなたがシフト時にビットを失うことを理解していると仮定した場合) – Nigel