電卓を使用して積分型のMIN値とMAX値を計算するための数式は何ですか。Integer.MaxやInteger.Minなどを使用するか、msdnで検索できることは知っていますが、計算方法を知りたいです。
8 に答える
符号なしタイプの場合:
- 最小値=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
この例では、32ビットの符号付き整数を使用しています。31ビットは、2^31の可能性を作成する値に使用されます。ゼロを含める必要があるため、1を引く必要があります。
2^31-1
負の場合、ゼロを含める必要がないため、全範囲が得られます。
-2^31
符号なし整数の場合、最大値は単純2^32-1
に、最小値はです0
。
タイプが何ビットであるか、そしてそれが署名されているかどうかを知る必要があります。
たとえば、anint
はC#では32ビットであり、署名されています。これは、数値を表す31ビットがあることを意味します(1ビットは負または正を決定するために使用されます)。したがって、2 31を計算し、2147483647である1を減算します(これはInteger.MaxValueが返すものです)。
同様に、abyte
は8ビットであり、符号なしであるため、最大値は28-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);
整数変数の最小/最大値は、使用されるビットの量から導出されます(通常、2の累乗、つまり2ビット、4ビット、8ビット)。C#のINTは32ビットを使用するため、MAX値は4,294,967,295になる可能性があります。これは、32ビットのデータが表すことができる最大値であるためです。とにかく私の理解です。
電卓に10進数から2進数への変換がある場合(decから16進数でも機能します)、Int32.MaxValueを変換して、パターンを見つけるかどうかを確認してください...
私はあなたがこれが役に立つと思うと信じています:
整数(コンピュータサイエンス)@ウィキペディア