-1

& Operatorに関するMSDNの記事に基づいて、C#でバイナリAND操作を実行しようとしています

私が行った場合:

1111 & 10 = 2 (0010) // Which is what i expect

でも、

1111 & 100 = 68 (1000100) // Which is **not** what i expect.

出力は100になると思っていたでしょう

ここに画像の説明を入力

私は何が欠けていますか?

4

3 に答える 3

7

指定した数値 1111 と 100 は、2 進数ではなく、10 進数として扱われています。

バイナリ整数 1111 が必要な場合は15、10 を基数とするバージョンであるため、 を入力する必要があります。そう:

15 & 4となり4ます。

C# には、整数リテラルをバイナリで指定するための構文はありません。自分で 10 進数に変換するか、 through などの実行時変換を使用する以外に選択肢はありませんConvert.ToInt

于 2013-09-03T15:49:19.147 に答える
3

10 進数の使用に加えて、16 進数も接頭辞として機能します0x0xF & 0x4

ただし、バイナリ リテラルのプレフィックスはありませんが、これを行うことができます。

Convert.ToInt32("1111", 2) & Convert.ToInt32("100", 2)

于 2013-09-03T15:57:48.563 に答える
2

出力は正しいです。

ポイントは、数値を 2 進数と見なしていることです。ここでの数値は 10 進整数として扱われます。C# の仕様 - 整数リテラルおよび SO の質問C# バイナリ リテラルからわかるように、C# には 6 つまでのバイナリ定数はありません。

ただし、以下の説明を参照してください。

1111          10001010111
& 10        & 00000001010
= 2         = 00000000010

 1111         10001010111
& 100       & 00001100100
= 68        = 00001000100

& 演算子の詳細については、MSDN を参照してください。

于 2013-09-03T16:04:31.137 に答える