Boolean
操作を行う必要があり
B1=00 10 11 01 00
B2=00 10 11 01
B1 NOR B2 =11 11 11 11
それはどのようにJavaで可能ですか?誰でも助けることができますか?
申し訳ありませんが、私は言いたいことを忘れてしまいました。このビットワイズNOR演算は、常にシフトなしで実行できます(B2のビット数は少ないです)。
Boolean
操作を行う必要があり
B1=00 10 11 01 00
B2=00 10 11 01
B1 NOR B2 =11 11 11 11
それはどのようにJavaで可能ですか?誰でも助けることができますか?
申し訳ありませんが、私は言いたいことを忘れてしまいました。このビットワイズNOR演算は、常にシフトなしで実行できます(B2のビット数は少ないです)。
で、式は次のようになります。詳細については
~(b1 | b2)
、Bitwise and Bit Shift Operatorsを参照してください。
しかし、あなたの例では、変数の長さが異なります。結果はNORにも対応していません。
更新:
BitSet b1 = new BitSet();
// Fill it with booleans:
for (int i = 0 ; i < myBooleans.length ; i++)
b1.set(i, myBooleans[i]);
// Or fill it with bytes:
BitSet b1 = BitSet.valueOf(myBytes);
// Or fill it with 0/1 from a string:
for (int i = 0 ; i < myString.length() ; i++)
b1.set(i, myString.charAt(i) == "1");
BitSet b2 = new BitSet();
// Same as above
BitSet result = new BitSet();
result.or(b1); // Copies b1
result.or(b2); // Makes the OR
result.flip(0,result.size()); // Negates - the result is a NOR
result.clear(Math.min(b1.size(), b2.size()), result.size()); // Only retain the common size
の場合:あなたはブール値の二つの配列、ないに等しいサイズを有し、かつ唯一の(左から右へ)、それの一部を必要とする場合、私はBitSet
使用をお勧めしたいint
を実際に使用したい場合は、右から左に表現する方が良いです(最初のビットはb % 2
、次はb/2 % 2
などです)。次に、最初に説明したようにNORを実行し、必要に応じて結果。
それらは0(例:B1=0010 1101 0000 0000 0000 0000 0000 0000
、B2=0010 1101 0000 0000 0000 0000 0000 0000
)が埋め込まれていない限り、(...または本質的に同じものである乗算/除算、しかし、より高価な)左から右へ、私はシフトが必要になると考えている表現。この場合、正常に操作できます。 B2と
ノーまたはノーだけではないので、ビット単位またはインバートしてください。
B1 nor B2 = ~(B1|B2);
あなたの例では、しかし私には意味がありません。 b1
とb2
があなたの(int型)の変数であれば、なぜ(2'b11 NOR 2'b11) = 2'b11?
XOR b1が、その後、 "ない" 結果:| `して、ビット単位ではない`〜 `
B1 xnor B2 = ~(B1^B2)
ありがとうございますが、不等ビットで間違った結果が出ます。なぜなら、左からXNOR操作をしているからです。 – Arpssss
はビット賢明か'行います。 – twain249
どのようにB1とB2を取得しますか? 'バイト'? 'ビット[]'? 'integer []'? 'char []'? –
あなたはXNORを求めていませんか? b1 xnor b2はあなたの例に基づいて11 11 11 11 ... – Tung