最大のint64値をコマンドラインに書き込もうとしています。16個使っ0x1111111111111111
てみましたが、VisualStudioではint64と書いてあります。私はそれがint16だと思っていたでしょう。ここに何が欠けていますか?
3 に答える
0x
は16進数のプレフィックスであり、2進数のリテラルではありません。これは、あなたの番号のバイナリ表現が0001000100010001000100010001000100010001000100010001000100010001
残念ながら、C#にはバイナリリテラルがないため、自分で計算を行うか(0x7FFFFFFFFFFFFFFF
)、Convert
クラスを使用する必要があります。次に例を示します。
short s = Convert.ToInt16("1111111111111111", 2); // "2" for binary
最大のInt64番号を取得するために、このフィールドですでに利用可能であるため、独自の計算を実行する必要はありません。
Int64.MaxValue
リテラル0x1111111111111111
は16進数です。各16進数は4ビットを使用して表すことができるため、16桁の16進数では、4 * 16=64ビットが必要です。あなたはおそらく2進数を書くつもりでした1111111111111111
。次のコードを使用して、バイナリリテラル文字列から整数に変換できます。
Convert.ToInt16("1111111111111111", 2)
これにより、目的の数値(-1)が返されます。
最大値を取得するには、( )Int64
を使用できます。または、符号なしの値が本当に必要な場合は、()を使用できます。Int64.MaxValue
0x7FFFFFFFFFFFFFFF
UInt64.MaxValue
0xFFFFFFFFFFFFFFFF
最大のInt64値はInt64.MaxValueです。これを16進数で印刷するには、次のことを試してください。
Console.WriteLine(Int64.MaxValue.ToString("X"));