質問

計算機を使用して積分タイプの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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top