C / C ++では、動的に割り当てられたメモリにビット演算子(特に左/右シフト)を適用する簡単な方法はありますか?
たとえば、私がこれを行ったとしましょう:
unsigned char * bytes=new unsigned char[3];
bytes[0]=1;
bytes[1]=1;
bytes[2]=1;
これを行う方法が欲しいのですが:
bytes>>=2;
(この場合、「バイト」の値は次のようになります):
bytes[0]==0
bytes[1]==64
bytes[2]==64
値をそのようにする必要がある理由:
割り当て後、バイトは次のようになります。
[00000001][00000001][00000001]
しかし、私はバイトを次のように1つの長いビット文字列として扱いたいと考えています。
[000000010000000100000001]
2つ右にシフトすると、ビットは次のようになります。
[000000000100000001000000]
これは、3バイト(つまり、0、64、64)に分割すると、最終的に次のようになります。
[00000000][01000000][01000000]
何か案は?構造体/クラスを作成して適切な演算子をオーバーロードする必要がありますか?編集:もしそうなら、どのように進めるかについてのヒントはありますか?注:私はこれを(ある程度のガイダンスとともに)学習体験として自分で実装する方法を探しています。