に従ってbit twiddling hacksウェブサイトによれば、操作 unsigned int a; // value to merge in non-masked bits
unsigned int b; // value to merge in masked bits
unsigned int mask; // 1 where bits from b should be selecte
私の現在の趣味プロジェクトは、フランス語デッキ(52枚、エースから52枚まで)のカードゲームのモンテカルロシミュレーションを提供しています。 可能な限り高速にシミュレーションするために、複数のカードをいくつかの箇所でビットマスクとして表現しています。ここではいくつかの(簡体字)のコードは次のとおりです。 public struct Card
{
public enum CardColo
Cで ++、私は次のコードを持っている: int x = -3;
x &= 0xffff;
cout << x;
これは 65533
を生成しかし、私は否定的を外した場合、私はこれを持っていた: int x = 3;
x &= 0xffff;
cout << x;
私は単に3を取得します結果として なぜ最初の結果が負数を生成するか? -3は符号が16ビットに拡張されていることを
LC3シミュレータ用のプログラムを作成しようとしています。メモリ内の別の場所に格納されている2進数の1の数をカウントできます。ここで私はこれまで持っているものです。 0011 0001 0000 0000 ; Start the data at memory location x3100
0110 1010 1111 0001 ; Hex number stored at x3000
001