質問

CSの2年生は答えられるはずですが、頭を包み込むことができないようです...

ビットのセットがあり、一部のビットを別のセットに置き換える必要があります。簡単な例:

10101010-元のビットセット

00001111-置換位置を示すマスク

00001100-新しいビット値

10101100-結果のビットセット

別の例:

10101010-元のビットセット

00110011 -mask

11111111-新しいビット値

10111011-結果のビットセット

ビットを反復処理することでこれを行うのは簡単です。

ブール論理(AND、ORなど)を使用してこれを行うことは可能ですか?

役に立ちましたか?

解決

result = (original & ~mask) | (newbits & mask)

"& 〜mask"パートの前に、これらのビットを0にクリアしてくださいパート。

"&マスク"一部は、newbitsの適切なビットのみが使用されていることを確認してください。

他のヒント

(新規およびマスク)または(旧および非マスク)

元のビットから置き換えられるビットをマスクし(マスクのNOTとのAND結合により)、新しいビットを(ORを介して)挿入します。

10101010-元のビットセット

00001111-置換位置を示すマスク

00001100-新しいビット値

11110000-ネゲートマスク

10100000-マスクされた元のビットセット

10101100-新しいビットを戻す


C(++)コードでは、次のようになります。

out =(in&〜mask)| newbits;

newbitsに、置き換えられるはずのビットが含まれていない場合は、マスクも使用してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top