2011-08-15 16 views
2

2つの数値aとbを与えられます。ここで、bは2の形をしています。kここでkは未知数です。ビット単位の演算子を使用して%bを計算する効率的な方法はどれでしょうか?ビット単位のモジュラス計算

+5

を==します。あなたの考えは?どこに問題がありますか? – Oded

+1

_a_が肯定的である限り、明白な解決法が機能しますが、純粋なビット操作による負のオペランドの正しい動作を達成するには、複雑になるでしょう。 –

+1

最も効率的な方法は、DIVを使用することです。DXレジスタのモジュラスを持つ1つのアセンブリ命令です。なぜそれはより非効率な方法ですか? – QuentinUK

答えて

4

と(B-1)は、%bの(bは2^kは)宿題の質問をすると、あなたの側に私たちの努力のビットを示し

ex. a = 11 (1011b), b = 4 (0100b) 
11/4 = 2 R3 
11 % 4 == 11 AND (4-1) 
11 (1011b) AND 3 (0011b) == 3 (0011b) 
関連する問題