Минимальное и максимальное значение целочисленного типа в C # - PullRequest
1 голос
/ 06 мая 2010

Какие математические формулы для расчета значения MIN и MAX целого типа с помощью вашего калькулятора. Я знаю, что вы можете использовать Integer.Max или Integer.Min и т. Д. Или посмотреть на MSDN, однако я хочу знать, как рассчитать его.

Ответы [ 8 ]

12 голосов
/ 06 мая 2010

Для неподписанных типов:

  • Минимальное значение = 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
3 голосов
/ 06 мая 2010

В этом примере я использую 32-битное целое число со знаком. 31 бит используется для значения, создающего 2 ^ 31 возможностей. Поскольку ноль должен быть включен, вы должны вычесть один.

2^31-1

При отрицательном значении ноль не требуется, поэтому вы получаете полный диапазон.

-2^31

В случае целого числа без знака максимальное значение равно просто 2^32-1, а минимальное 0.

1 голос
/ 06 мая 2010

Пример ответа на ваш вопрос

int подписано:

Min=(1 << ((sizeof(int) * 8) - 1));
Max=~(1 << ((sizeof(int) * 8) - 1));

также

Min=~(int)((~((uint)0))>>1);
Max=(int)((~((uint)0))>>1);

int без знака:

Min=0;
Max=~((uint)0);
1 голос
/ 06 мая 2010

Вам нужно знать, сколько битов в типе, и подписано оно или нет.

Например, int является 32-битным в C # и подписано. Это означает, что есть 31 бит для представления числа (1 бит используется для определения отрицательного или положительного значения). Таким образом, вы бы вычислили 2 31 и вычли бы единицу, равную 2147483647 (что и возвращает Integer.MaxValue).

Similary a byte имеет 8 бит и не имеет знака, поэтому максимальное значение равно 2 8 -1 или 255.

0 голосов
/ 06 мая 2010

Я полагаю, вы найдете это полезным:
Целое число (компьютерные науки) @ Wikipedia

0 голосов
/ 06 мая 2010

Если в вашем калькуляторе есть десятичное-двоичное преобразование (десятичное-шестнадцатеричное также будет работать), попробуйте преобразовать Int32.MaxValue и посмотрите, определите ли вы шаблон ...

0 голосов
/ 06 мая 2010
0 голосов
/ 06 мая 2010

Мин. / Макс. Значение переменной Integer получается из количества использованных битов (обычно до степени 2, т.е. 2 бита, 4 бита, 8 бит). INT в C # использует 32 бита, и поэтому может иметь значение MAX 4 294 967 295 - поскольку это максимальное значение, которое могут представлять 32 бита данных - как я понимаю, в любом случае.

...