Какое максимальное значение для int32? - PullRequest
1380 голосов
/ 18 сентября 2008

Я никогда не могу вспомнить номер. Мне нужно правило памяти.

Ответы [ 50 ]

5 голосов
/ 22 мая 2018

2147483647

Вот что вам нужно запомнить:

  • Это 2 миллиарда .
  • Следующие три тройки растут следующим образом: 100 с, 400 с, 600 с
  • Первая и последняя тройка должны быть добавлены к ним 3 , поэтому они округляются до 50 (например, 147 + 3 = 150 и 647 + 3 = 650)
  • Для второй тройки нужно вычесть 3 из нее, чтобы округлить ее до 80 (например, 483 - 3 = 480)

Следовательно 2, 147, 483, 647

5 голосов
/ 27 января 2016

Запомните это: 21 IQ ITEM 47

Его можно расшифровать на любой телефонной клавиатуре, или вы можете просто написать его на бумаге.

Чтобы вспомнить «21 IQ ITEM 47», я бы сказал «Hitman: Codename 47 имел 21 миссию, каждая из которых была IQ ITEM».

Или «Я чищу зубы каждый день в 21:47, потому что у меня высокий IQ и я не люблю предметы во рту».

5 голосов
/ 18 сентября 2008

С Groovy на пути:

groovy -e " println Integer.MAX_VALUE "

(Groovy чрезвычайно полезен для быстрого ознакомления в контексте Java.)

5 голосов
/ 17 июня 2009

Int32 означает, что у вас есть 32 бита для хранения вашего номера. Старший бит - это бит знака, это указывает, является ли число положительным или отрицательным. Таким образом, у вас есть 2 ^ 31 бит для положительных и отрицательных чисел.

Если ноль является положительным числом, вы получите логический диапазон (упомянутый ранее)

+ 2147483647 до -2147483648

Если вы думаете, что это мало, используйте Int64:

+ 9223372036854775807 до -9223372036854775808

И какого черта ты хочешь запомнить этот номер? Использовать в своем коде? Вы всегда должны использовать Int32.MaxValue или Int32.MinValue в своем коде, так как это статические значения (в ядре .net) и, следовательно, быстрее в использовании, чем создание нового int с кодом.

Мое утверждение: если знать это число по памяти ... ты просто хвастаешься!

4 голосов
/ 16 ноября 2018

Я создал пару гениальных методов в C #, которые вы можете использовать в своей производственной среде:

public static int GetIntMaxValueGenius1()
{
    int n = 0;
    while (++n > 0) { }
    return --n;
}

public static int GetIntMaxValueGenius2()
{
    int n = 0;
    try
    {
        while (true)
            n = checked(n + 1);
    }
    catch { }
    return n;
}
3 голосов
/ 20 июня 2017

Просто помните, что это восьмое простое число Мерсенна.

Если это слишком сложно, это также третья из четырех известных двойных простых чисел Мерсенна.

Редактировать по запросу комментария:

Теорема Евклида-Эйлера утверждает, что каждое четное совершенное число имеет вид 2 ^ (n - 1) (2 ^ n - 1), где 2 ^ n - 1 - простое число. Простые числа вида 2 ^ n - 1 известны как простые числа Мерсенна и требуют, чтобы само n было простым.

Мы знаем, что длина INT32, конечно, составляет 32 бита. Учитывая общепринятое понимание дополнения 2, INT32 со знаком имеет 32 бита - 1 бит.

Чтобы найти величину двоичного числа с заданным количеством битов, мы обычно возводим 2 в степень n, минус 1, где n равно числу битов.

Таким образом, вычисление величины составляет 2 ^ (32 - 1) - 1 = 2 ^ 31 - 1. 31 простое число, и, как указано выше, простые числа этой формы являются простыми числами Мерсенна. Мы можем доказать, что это восемь таких, просто посчитав их. За дополнительной информацией, пожалуйста, обращайтесь к Эйлеру или, может быть, к Бернулли (кому он писал о них).

См .: https://books.google.ie/books?id=x7p4tCPPuXoC&printsec=frontcover&dq=9780883853283&hl=en&sa=X&ved=0ahUKEwilzbORuJLdAhUOiaYKHcsZD-EQ6AEIKTAA#v=onepage&q=9780883853283&f=false

3 голосов
/ 23 апреля 2017

Чтобы никогда не забывать максимальное значение любого типа:

Если он имеет 32 бита, наибольшее возможное значение будет 32 бита с номером 1:

enter image description here

Результат будет 4294967295 в десятичном виде:

enter image description here

Но, поскольку есть также представление отрицательных чисел, разделите 4294967295 на 2 и получите 2147483647.

Следовательно, 32-разрядное целое число может представлять от -2147483647 до 2147483647

3 голосов
/ 23 июля 2017

Еще один способ набрать это число:

  1. Сыграйте 2048 до максимального теоретического предела. На снимке: 15 ходов перед USHRT_MAX.
  2. Квадратный результат. О UINT_MAX.
  3. Разделите на 2 и - 1, чтобы получить INT_MAX.

enter image description here

3 голосов
/ 09 января 2017

Это 2147483647, однако вам действительно не нужно запоминать это. Это зависит от того, сколько цифр может иметь ваш номер. Иногда вместо этого вы можете использовать short int.

Если переполнение будет катастрофическим для вашей программы, возможно, вам придется использовать библиотеку неограниченного размера (хотя это будет медленнее).

3 голосов
/ 05 июля 2018

Попробуйте в Python:

>>> int('1' * 31, base=2)
2147483647
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...