マンチェスタ符号の高速な復号について
解決したいこと
組込ソフトにて、マンチェスタ符号化された通信データの解析を実行させることを考えています。
二進数0b01を1、0b10を0とするマンチェスタ符号があったとき、これをソフトウェアで高速に復号するやり方を教えていただきたいです。
C/C++だとありがたいですが、その他のコード、アルゴリズムだけでも回答いただけるとありがたいです。
詳細
素直に実施すると、2ビットごとに0か1かを判定し、ビット数の1/2回ループしていく手順が考えられます。しかし、データ数が多いためこれだと時間がかかってしまいます。
ビットカウント等は高速に実施するアルゴリズムが知られていますが、同様のものがあれば教えていただきたいと思った次第です。よろしくお願いいたします。
例
下記のような変換を、高速に行いたいです。
下記は入力8ビットの例ですが、実際は32ビットごとに復号することを考えています。
入力 0b 0110 0110 → 復号結果 0b 1010
入力 0b 0101 1010 → 復号結果 0b 1100
下記のようなパターンはマンチェスタ符号としてはあり得ないので、結果どうなってもOKです。
0b 1100 0000 → 結果問わず
1