いくつかのマスクに従って、1 つのビットストリームを多数に分割できるInverse Multiplexerを作成する実験を行っています。
アイデア例はこちら
これは 24 ビット ストリームで、各文字が 1 ビットを表します。
abcdefgh ijklmnop qrstuvwx
3 つのマスクが与えられた場合、すべてのマスクに共通のビットはありません。& 一緒にすると [1,1,1,1,1,1,1,1] になります。
[1, 1, 0, 0, 1, 0, 0, 0]
[0, 0, 1, 0, 0, 0, 1, 1]
[0, 0, 0, 1, 0, 1, 0, 0]
これらのマスクを次のようにストリームに適用します
stream1 = ab__e___ ij__m___ qr__u___
stream2 = __c___gh __k___op __s___wx
stream3 = ___d_f__ ___l_n__ ___t_v__
したがって、元のビットストリームは次のように 3 つのビットストリームに分割されます。
stream1 = abeijmqru
stream2 = cghkopswx
stream3 = dflntv
上記は単なる例です。特定のビットストリームに任意の数のマスクを適用する必要があります。マスクは相互に保証されており、ゼロのOR
結果があります。AND
すべてのマスクに適用すると、ONE の結果が得られます。すべてのマスクは同じ長さです。
私は、基本的にループ内でビットを 1 つずつシフトするアイデアを力ずくで実行するために、愚かなバージョンを作成しました。それは確かに効率的ではないと思いました。
私はこれを調べましたhttp://graphics.stanford.edu/~seander/bithacks.html
全く分からない。これを改善する方法を知っている人はいますか?(x86 マシン上)