0

最大のint64値をコマンドラインに書き込もうとしています。16個使っ0x1111111111111111てみましたが、VisualStudioではint64と書いてあります。私はそれがint16だと思っていたでしょう。ここに何が欠けていますか?

4

3 に答える 3

6

0xは16進数のプレフィックスであり、2進数のリテラルではありません。これは、あなたの番号のバイナリ表現が0001000100010001000100010001000100010001000100010001000100010001

残念ながら、C#にはバイナリリテラルがないため、自分で計算を行うか(0x7FFFFFFFFFFFFFFF)、Convertクラスを使用する必要があります。次に例を示します。

short s = Convert.ToInt16("1111111111111111", 2); // "2" for binary

最大のInt64番号を取得するために、このフィールドですでに利用可能であるため、独自の計算を実行する必要はありません。

Int64.MaxValue 
于 2013-03-11T23:13:45.080 に答える
3

リテラル0x1111111111111111は16進数です。各16進数は4ビットを使用して表すことができるため、16桁の16進数では、4 * 16=64ビットが必要です。あなたはおそらく2進数を書くつもりでした1111111111111111。次のコードを使用して、バイナリリテラル文字列から整数に変換できます。

Convert.ToInt16("1111111111111111", 2)

これにより、目的の数値(-1)が返されます。

最大値を取得するには、( )Int64を使用できます。または、符号なしの値が本当に必要な場合は、()を使用できます。Int64.MaxValue0x7FFFFFFFFFFFFFFFUInt64.MaxValue0xFFFFFFFFFFFFFFFF

于 2013-03-11T23:17:14.457 に答える
0

最大のInt64値はInt64.MaxValueです。これを16進数で印刷するには、次のことを試してください。

Console.WriteLine(Int64.MaxValue.ToString("X"));
于 2013-03-11T23:16:08.323 に答える