Я никогда не могу вспомнить номер. Мне нужно правило памяти.
Это 2 147 483 647. Самый простой способ запомнить это - татуировка.
Самый правильный ответ, который я могу придумать, это Int32.MaxValue
.
если вы можете вспомнить весь номер Pi, то номер, который вы ищете, находится в положении 1 867 996 680–1 867 996 689 десятичных цифр числа Pi
Числовая строка 2147483647 появляется в десятичной цифре 1 867 996 680 числа Пи. 3,14......86181221809936452346 2147483647 10527835665425671614...
источник: http://www.subidiom.com/pi/
Вместо того, чтобы думать об этом как об одном большом числе, попробуйте разбить его и искать связанные идеи, например:
Вышеуказанное относится к наибольшему отрицательному числу; положительно то, что минус один.
Возможно, приведенная выше разбивка больше не будет запоминающейся для вас (это вряд ли захватывающе, не так ли?!), но, надеюсь, вы можете придумать некоторые идеи, которые есть!
Наибольшее отрицательное (32-битное) значение: -2147483648 < br / > (1 < < 31) < br / >
Наибольшее положительное (32-битное) значение: 2147483647 < br / > ~ (1 < < 31) < br / >
Мнемоник: "пьяный AKA роговой" < br / >
drunk ========= Drinking age is 21
AK ============ AK 47
A ============= 4 (A and 4 look the same)
horny ========= internet rule 34 (if it exists, there's 18+ material of it)
21 47 4(years) 3(years) 4(years)
21 47 48 36 48
В любом случае, возьмите этот регулярник (он определяет, содержит ли строка неотрицательное целое число в десятичной форме, которое также не больше, чем Int32.MaxValue)
`[0-9] {1,9} | [0-1] [0-9] {1,8} | 20 [0-9] {1,8} | 21 [0-3] [0-9] {0-6] [0-9] {1,7} | 2147 [0-3] {1
Может быть, это поможет вам вспомнить.
Вот как я вспомнил 2147483647
:
Напишите это горизонтально:
214_48_64_
and insert:
^ ^ ^
7 3 7 - which is Boeing's airliner jet (thanks, sgorozco)
Теперь у вас есть 2147483647.
Надеюсь, это поможет хотя бы немного.
2^(x+y) = 2^x * 2^y
2^10 ~ 1,000
2^20 ~ 1,000,000
2^30 ~ 1,000,000,000
2^40 ~ 1,000,000,000,000
(etc.)
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
Итак, 2 ^ 31 (подписано int max) составляет 2 ^ 30 (около 1 миллиарда) раз 2 ^ 1 (2) или около 2 миллиардов. А 2 ^ 32 - это 2 ^ 30 * 2 ^ 2 или около 4 миллиардов. Этот метод аппроксимации достаточно точен даже до 2 ^ 64 (где ошибка возрастает до 15%).
Если вам нужен точный ответ, вам следует взять калькулятор.
Удобные выравниваемые по слову аппроксимации:
Это о 2,1 * 10 ^ 9
. Не нужно знать точное 2 ^ {{{31}}} - 1 = 2 147 483 647
.
Вы можете найти его в C, как это:
#include <stdio.h>
#include <limits.h>
main() {
printf("max int:\t\t%i\n", INT_MAX);
printf("max unsigned int:\t%u\n", UINT_MAX);
}
дает (ну, без ,
)
max int: 2,147,483,647
max unsigned int: 4,294,967,295
std::cout << std::numeric_limits<int>::max() << "\n";
std::cout << std::numeric_limits<unsigned int>::max() << "\n";
Вы также можете получить это с Java:
System.out.println(Integer.MAX_VALUE);
Но имейте в виду, что целые числа Java всегда подписаны.
Python имеет произвольные прецизионные целые числа. Но в Python 2 они отображаются на C целых числа. Таким образом, вы можете сделать это:
import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L
Таким образом, Python переключается на long
, когда целое число становится больше, чем 2 ^ 31 -1
Вот мнемоника для запоминания 2 ** 31, вычтите одну, чтобы получить максимальное целочисленное значение.
a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8, i = 9
Boys And Dogs Go Duck Hunting, Come Friday Ducks Hide
2 1 4 7 4 8 3 6 4 8
Я использовал полномочия двух до 18 достаточно часто, чтобы помнить их, но даже я не удосужился запомнить 2 ** 31. Слишком легко рассчитать по мере необходимости или использовать константу или оценить как 2G .
32 бита, один для знака, 31 бит информации:
2^31 - 1 = 2147483647
Почему -1?& Лт; br / > Потому что первое равно нулю, поэтому наибольшее количество - это счет минус один .
EDIT для cantfindaname88
Количество составляет 2 ^ 31, но наибольшее не может быть 2147483648 (2 ^ 31), потому что мы считаем из 0, а не 1.
Rank 1 2 3 4 5 6 ... 2147483648
Number 0 1 2 3 4 5 ... 2147483647
Другое объяснение только с 3 битами: 1 для знака, 2 для информации
2^2 - 1 = 3
Ниже все возможные значения с 3 битами: (2 ^ 3 = 8 значений)
1: 100 ==> -4
2: 101 ==> -3
3: 110 ==> -2
4: 111 ==> -1
5: 000 ==> 0
6: 001 ==> 1
7: 010 ==> 2
8: 011 ==> 3
Ну, он имеет 32 бита и, следовательно, может хранить 2 ^ 32 различных значения. Половина из них отрицательна.
Решение составляет 2 147 483 647
И самый низкий - 2 147 483 648.
(Обратите внимание, что есть еще одно отрицательное значение.)
Ну, кроме шуток, если вы действительно ищете полезное правило памяти, есть правило, которое я всегда использую для запоминания больших чисел.
Вам нужно разбить свой номер на части из 3-4 цифр и запомнить их визуально, используя проекцию на клавиатуре вашего мобильного телефона. На картинке легче показать:
Как видите, отныне вам просто нужно запомнить 3 фигуры, 2 из них похожи на Tetris L, а одна - на тик . Что определенно намного проще, чем запоминать 10-значный номер.
Когда вам нужно вспомнить номер, просто вспомните фигуры, представьте / посмотрите на клавиатуру телефона и спроектируйте фигуры на ней. Возможно, сначала вам придется взглянуть на клавиатуру, но после небольшой практики вы помните, что цифры идут сверху вниз, а затем - вправо, поэтому вы сможете просто представить это в своей голове.
Просто убедитесь, что вы помните направление фигур и количество цифр в каждой форме (например, в примере 2147483647 у нас есть 4-значный Tetris L и 3-значный L).
Вы можете использовать эту технику, чтобы легко запомнить любые важные цифры (например, я вспомнил свой 16-значный номер кредитной карты и т. Д.).).
Сначала запишите 47 дважды (вам нравится Агент 47, верно?), сохраняя пробелы, как показано (каждая тире - это слот для одной цифры. Сначала 2 слота, затем 4)
--47----47
Думаю, у вас в руках 12
(потому что 12 = дюжина). Умножьте его на 4
, первую цифру номера агента 47, т.е. 47
, и поместите результат справа от первой пары, которая у вас уже есть
12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47
Затем умножьте 12
на 3
(чтобы сделать вторую цифру числа агента 47, которая равна 7
, вам нужно 7 - 4 = 3
) и поместите результат справа от первых 2 пар, последний парный слот
12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs
Наконец, перетащите цифры один за другим из вашей руки, начиная с самой правой цифры (в данном случае 2), и поместите их в первый пустой слот, который вы получите
2-47483647 <-- after placing 2
2147483647 <-- after placing 1
Там у вас есть это! Для отрицательного предела вы можете думать об этом как о 1 больше в абсолютном значении , чем положительный предел.
Практикуйтесь несколько раз, и вы освоитесь!
Самый простой способ сделать это для целых чисел - использовать шестнадцатеричное, при условии, что нет ничего подобного Int.maxInt (). Причина в том, что:
Максимальные значения без знака
8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Подписанные значения, используя 7F в качестве максимального подписанного значения
8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF
Подписанные значения, используя 80 в качестве максимального подписанного значения
8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000
Как это работает? Это очень похоже на бинарную тактику, и каждая шестнадцатеричная цифра составляет ровно 4 бита. Кроме того, многие компиляторы поддерживают гексы намного лучше, чем бинарные.
F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000
Таким образом, 7F равен 01111111 / 7FFF равен 011111111111111111111111. Кроме того, если вы используете это для "безумно высокой постоянной", 7F ... это безопасный гекс, но достаточно просто опробовать 7F и 80 и просто распечатать их на экране, чтобы увидеть, какой это.
0x7FFF + 0x0001 = 0x8000, поэтому ваша потеря - только одно число, поэтому с помощью 0x7F ... обычно это не плохой компромисс для более надежного кода, особенно когда вы начинаете использовать 32-битный или более
Лучшее правило для его запоминания: 21 (магический номер!) 47 (просто запомни это) 48 (последовательный!) 36 (21 + 15, обе магии!) 47 снова
Также легче запомнить 5 пар, чем 10 цифр.