OK、皆さん、やりたいことはわかっていますが、それが(関数として、または理論的に)既に存在するかどうか、またはそれを表現する方法がわからないので、あなたの助けが必要です:
- 2 進数があるとしましょう: (msb)
10101110
(lsb) - ビット X から始めて、最初のゼロ ビットが検出されるとすぐに、他のすべてのビットをゼロにします (左に移動)。
- 必要な絶対最小数の操作と CPU サイクルで、可能な限り高速に実行します。
例 :
- 番号 = 10101110、開始位置 = 1 (1 位のビット = 1)
- position++ - 2 番目のビット = 1、続行
- position++ - 3 位のビット = 1、続行
- position++ - 4 位のビット = 0、おっと... ゼロが検出されました... 今、すべてをゼロにする必要があります。
したがって、架空の関数 CROPLEFT(X,POS) (X=10101110、POS=1) の最終結果は を返し00001110
ます。
何か案は?