1

電卓を使用して積分型のMIN値とMAX値を計算するための数式は何ですか。Integer.MaxやInteger.Minなどを使用するか、msdnで検索できることは知っていますが、計算方法を知りたいです。

4

8 に答える 8

12

符号なしタイプの場合:

  • 最小値=0
  • 最大値=(2 **(ビット数))-1

だから、のためにUInt32

Min value = 0

Max value = (2 ** 32) - 1
          = 4294967296 - 1
          = 4294967295

署名付きタイプの場合:

  • 最小値=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
于 2010-05-06T09:29:37.067 に答える
3

この例では、32ビットの符号付き整数を使用しています。31ビットは、2^31の可能性を作成する値に使用されます。ゼロを含める必要があるため、1を引く必要があります。

2^31-1

負の場合、ゼロを含める必要がないため、全範囲が得られます。

-2^31

符号なし整数の場合、最大値は単純2^32-1に、最小値はです0

于 2010-05-06T09:29:59.497 に答える
1

タイプが何ビットであるか、そしてそれが署名されているかどうかを知る必要があります。

たとえば、anintはC#では32ビットであり、署名されています。これは、数値を表す31ビットがあることを意味します(1ビットは負または正を決定するために使用されます)。したがって、2 31を計算し、2147483647である1を減算します(これはInteger.MaxValueが返すものです)。

同様に、abyteは8ビットであり、符号なしであるため、最大値は28-1または255です。

于 2010-05-06T09:30:43.343 に答える
1



署名された質問回答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);
于 2010-05-06T09:51:47.920 に答える
0

整数変数の最小/最大値は、使用されるビットの量から導出されます(通常、2の累乗、つまり2ビット、4ビット、8ビット)。C#のINTは32ビットを使用するため、MAX値は4,294,967,295になる可能性があります。これは、32ビットのデータが表すことができる最大値であるためです。とにかく私の理解です。

于 2010-05-06T09:30:43.920 に答える
0

http://en.wikipedia.org/wiki/Integer_%28computer_science%29

于 2010-05-06T09:30:58.897 に答える
0

電卓に10進数から2進数への変換がある場合(decから16進数でも機能します)、Int32.MaxValueを変換して、パターンを見つけるかどうかを確認してください...

于 2010-05-06T09:31:35.120 に答える
0

私はあなたがこれが役に立つと思うと信じています:
整数(コンピュータサイエンス)@ウィキペディア

于 2010-05-06T09:31:54.717 に答える