私は(すべての変数が正の整数である)この不等式を満たすこと1 << n
最大を見つけようとしているに(1 << n)の対象を最大化:(NOT繰り返し)(A&〜((1 << n) - 1)) > = B
a & ~((1 << n) - 1) >= b
は簡単です(はい、私はあなたが分割統治などを通じて、より良いパフォーマンスを得ることができます知っている)、それは私の質問はありません。
があれば、私は思ったんだけどこれは解決できる可能性があります、いくつかの種類のビットtwiddlingのような?
注1: 1回の操作で「最も近い2の累乗に丸めたり下げたりできます」と仮定します。
注2:必要に応じて、2の補数表現を仮定することができます(ただし、これは役立ちます)。
直接的な方法がある場合、これを解決するためにどのような技術を使用できますか?どういうわけか、私に教えてもらえますか?
私はa
とb
のようなものをたくさん試して、結果を2の次の累乗に丸めるなどしていましたが、いつもうまくいくものを見つけることはできませんでした。
「すべての変数は正の整数です」ということは、すべての変数が「unsigned」型であることを意味していますか? – Marian
@マリアン:確かに、なぜ...あなたが署名されているか署名のないものにキャストすることができます。そうでなければ、それは本当に問題ではありません。 – Mehrdad
これは 'a&〜b'の先頭ビットを見つけるのと同じではありませんか? – Marian