C#の積分タイプの最小値と最大値
質問
計算機を使用して積分タイプのMINと最大値を計算する数学的式は何ですか。 integer.maxまたはinteger.minなどを使用したり、MSDNで調べたりできることを知っていますが、計算方法を知りたいです。
解決
署名されていないタイプの場合:
- 最小値= 0
- max value =(2 **(ビット数))-1
だから、 UInt32
:
Min value = 0
Max value = (2 ** 32) - 1
= 4294967296 - 1
= 4294967295
署名されたタイプの場合:
- min値= 0-(2 **(ビット数-1))
- 最大値=(2 **(ビット数-1))-1
だから、 Int32
:
Min value = 0 - (2 ** (32 - 1))
= 0 - (2 ** 31)
= 0 - 2147483648
= -2147483648
Max value = (2 ** (32 - 1)) - 1
= (2 ** 31) - 1
= 2147483648 - 1
= 2147483647
他のヒント
この例では、32ビットの署名された整数を使用しています。 31ビットは、2^31の可能性を作成する値に使用されます。ゼロを含める必要があるため、1つを差し引く必要があります。
2^31-1
負の場合、ゼロを含める必要はないため、フルレンジを取得します。
-2^31
署名されていない整数の場合、最大は単に 2^32-1
, 、そして分 0
.
タイプのビット数と、署名されているかどうかを知る必要があります。
たとえば、an int
C#で32ビットで、署名されています。これは、数を表すための31ビットがあることを意味します(1ビットは、負または郵便を決定するために使用されます)。したがって、2を計算します31 2147483647であるものを減算します(これはinteger.maxvalueが返すものです)。
シミラリーa byte
8ビットで、署名されていないので、最大値は2です8 -1または255。
質問の答えの例
int署名:
Min=(1 << ((sizeof(int) * 8) - 1));
Max=~(1 << ((sizeof(int) * 8) - 1));
また
Min=~(int)((~((uint)0))>>1);
Max=(int)((~((uint)0))>>1);
int unsigned:
Min=0;
Max=~((uint)0);
整数変数のMIN/Max値は、使用するビットの量(通常は2、つまり2ビット、4ビット、8ビットの電力)から派生します。 C#のINTは32ビットを使用しているため、最大値は4,294,967,295の最大値を持つことができます。これは、32ビットのデータを表すことができる最大値です。
計算機に小数からバイナリ間変換がある場合(12月からヘックスへも機能します)、int32.maxvalueを変換して、パターンを見つけるかどうかを確認してください...
私はあなたがこれを役立つと思うと思います:
integer(コンピューターサイエンス) @ wikipedia