Какое максимальное значение для int32?

1380

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

Flinkman
источник
48
без знака: 2³²-1 = 4 · 1024³-1; подписано: -2³¹ .. + 2³¹-1, потому что бит знака является старшим битом. Просто выучите 2⁰ = 1 до 2¹⁰ = 1024 и объедините. 1024 = 1k, 1024² = 1M, 1024³ = 1G
комонада
31
Я вообще помню, что каждые 3 бита - это десятичная цифра. Это приводит меня к правильному порядку величины: 32 бита - это 10 цифр.
Бармар
8
@JoachimSauer, безусловно, может помочь при отладке, если вы научитесь хотя бы распознавать такие виды чисел.
Дунарил
72
«если диск заполнится, удаление всех мегабайт приведет к архивированию» (2 буквы, 1 буква, 4 буквы, 7 букв, 4 буквы, 8 букв, 3 буквы, 6 букв, 4 буквы, 7 букв)
UltraCommit
8
Случай, когда int32 недостаточно: bbc.com/news/world-asia-30288542
ingaham

Ответы:

5073

Это 2 147 483 647. Самый простой способ запомнить это с помощью татуировки.

Бен Хоффштейн
источник
83
Моя мнемоника: 2 ^ 10 очень близко к 1000, поэтому 2 ^ (3 * 10) составляет 1000 ^ 3 или около 1 миллиарда. Один из 32 битов используется для знака, поэтому максимальное значение в действительности составляет всего 2 ^ 31, что примерно вдвое больше, чем вы получаете за 2 ^ (3 * 10): 2 миллиарда.
16807
164
2147483647 без запятых.
Верн Д.
20
Просто используйте: Integer.MAX_VALUEв Java.
Тим
184
Если у вас есть татуировка на лице, не забудьте перевернуть ее, чтобы она правильно читалась в зеркале. В противном случае вы увидите 746 384 741,2, что неправильно и будет неудобно.
Ларри С.
127
2,147,483,647 = 0x7FFFFFFF, если вы хотите это запомнить, просто используйте hex.
roottraveller
493

Самый правильный ответ , который я могу думать Int32.MaxValue.

Адриан Кларк
источник
18
До этого я использовал #define INT32_MIN и INT32_MAX во всех моих проектах.
WildJoe
45
@CamiloMartin Привет. Я негодую на это. Там просто не было места для татуировок. Очевидно, что кодировке iso-8859-1 и десятичному
числу
3
Когда вы программируете: да, в 99% случаев. Но вы, возможно, захотите знать, что на планирование подходов к программированию или на работу с данными уходит около 2 миллиардов, хотя это очень большое число. :)
Андре Фигейредо
@sehe Разве латинская версия 1 / Windows 1252 устарела? Если он не может поместиться в 7 байтах ASCII, я не думаю, что он заслуживает места в основной памяти. Я имею в виду ... все кодовые страницы UNICODE довольно полезны, но более миллиона мегабайт пространства кажется пустой тратой. (Не говоря уже о том, что он по-прежнему не содержит описательных глифов для "pageup / pagedown" или "pagehome / pageend")
1
Это свойство может быть хорошим советом в дополнение к упоминанию правильного числа. Однако мне не нравится этот ответ, поскольку в нем упоминается только непереносимый способ определения значения и не упоминается, для каких языков программирования это работает, либо ...
mozzbozz 12.12.14
439

Если вы считаете, что значение слишком сложно запомнить в базе 10, попробуйте базу 2: 1111111111111111111111111111111

творог
источник
145
@ Ник Уэйли: Нет, 1111111111111111111111111111111 положительный. 11111111111111111111111111111111 будет отрицательным :-)
Творог
58
База 16, это даже проще 7FFFFFFF
Нельсон Гальдеман Грациано
34
@Curd 11111111111111111111111111111111как число base-2 все равно будет положительным (пример отрицательного в base-2 будет -1) . Эта последовательность битов отрицательна только в том случае, если она представляет 32-битный номер дополнения 2 :)
BlueRaja - Danny Pflughoeft
143
Легче всего запомнить будет база 2 147 483 647. Тогда все, что вам нужно запомнить, это 1.
big_tommy_7bb
82
@ tim_barber_7BB на самом деле, это 10.
fscheidl
317

если вы можете вспомнить все число Пи, то искомое число находится в диапазоне от 1 867 996 680 до 1 867 996 689 десятичных цифр числа Пи

Числовая строка 2147483647 указывается с десятичной цифрой Pi 1 867 996 680. 3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...

источник: http://www.subidiom.com/pi/

Диамантатос Параскевас
источник
30
Вы знаете, когда я начал читать ваш ответ, я ожидал чего-то практичного, например, 20-й цифры.
JqueryToAddNumbers
95
Это выглядит довольно круто. У вас есть другое правило памяти, чтобы помнить 1 867 996 680? Мне трудно вспомнить, по какому указателю начинать искать ....
Альдерат
10
« если вы можете вспомнить все числа Пи ... » - нет, вы не можете, это иррационально {как, возможно, один или два сообщения в этой Q & As} 8-D
SlySven
10
@Alderath Я обычно помню это как 10 десятичных знаков в sqrt (2), начиная с цифры 3803030133 ....
Henrik
2
@Alderath: числовая строка 1867996680 появляется в 380 630 713-й десятичной цифре квадратного корня из 2.
Яир Хальберштадт
290

Это 10 цифр, поэтому представьте, что это номер телефона (если вы в США). 214-748-3647. Я не рекомендую называть это.

WildJoe
источник
13
Говоря о том, что он запомнился как номер телефона, похоже, что некоторые телефонные спаммеры используют его: mrnumber.com/1-214-748-3647
Стивен,
8
«В Далласе нет обмена« 748 ». Этот номер - подделка». - со страницы, на которую ссылается shambleh
Tarnay Kálmán
104
@ Стивен Я не думаю, что они спамеры, просто люди, которые случайно сохранили номер телефона INTвместо VARCHARMySQL.
Зарел
8
Пробовал звонить. Он звонил несколько раз, затем переходил на тональный сигнал ошибки. = (
Krythic
172

Вместо того, чтобы думать об этом как об одном большом числе, попробуйте разбить его и искать связанные идеи, например:

  • 2 максимальных перерыва на снукер (максимальный перерыв - 147)
  • 4 года (48 месяцев)
  • 3 года (36 месяцев)
  • 4 года (48 месяцев)

Вышесказанное относится к наибольшему отрицательному числу; положительным является то, что минус один.

Возможно, вышеупомянутая разбивка не будет более запоминающейся для вас (это вряд ли интересно!), Но, надеюсь, вы сможете придумать некоторые идеи, которые есть!

Люк Беннетт
источник
99
Это одно из самых сложных мнемонических устройств, которые я когда-либо видел. Впечатляет.
Бен Хоффштейн
9
Хех, такие как Деррен Браун, на самом деле поддерживают такой подход - разбить число на нечто случайное, но более запоминающееся, чем просто набор чисел: channel4.com/entertainment/tv/microsites/M/mindcontrol/remember/…
Люк Беннетт
19
У меня есть лучшая мнемоника: все, что вам нужно запомнить, это 2 и 31, так как это, очевидно, ровно 2 ^ 31! Ой, подождите ...
Тамас Чинеге
28
@DrJokepu Я не уверен насчет приоритета оператора ... Это значит 2^(31!)или (2^31)!?
Alderath
1
@Lucio Обратите внимание, что мой ответ в первую очередь относится к наибольшему отрицательному числу, которое заканчивается на 48, а не 47
Люк Беннет
144

Наибольшее отрицательное (32-битное) значение: -2147483648
(1 << 31)

Наибольшее положительное (32-битное) значение: 2147483647
~ (1 << 31)

Мнемоника: "Пьяная ака роговая"

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
Аарен Кордова
источник
27
Миры сложнее всего вспомнить мнемонику. Если вы можете запомнить 0118 999 88199 9119 752 ... 3, вы можете запомнить это.
BenM
11
@Rondles Я думаю, что на самом деле это 7253 в конце.
Тим Тисдалл
21
Нет. Питьевой возраст здесь 18 ... Кажется, я не могу использовать эту мнемонику, моя жизнь разрушена.
Джоффри
4
@ Aaren Cordova Раньше говорили, что stackoverflow никогда не будет смешным, не более, чем сайт вопросов и ответов, я обычно указываю на этот ответ. Эта вещь может быть создана только внутри гениального ума, я имею в виду это есть искусство.
Мохд Абдул Муджиб
5
Наибольшее отрицательное 32-разрядное целое число, или 64-разрядное в этом отношении, равно -1.
Фред Митчелл
75

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

[0-9]{1,9}|[0-1][0-9]{1,8}|20[0-9]{1,8}|21[0-3][0-9]{1,7}|214[0-6][0-9]{1,7}|2147[0-3][0-9]{1,6}|21474[0-7][0-9]{1,5}|214748[0-2][0-9]{1,4}|2147483[0-5][0-9]{1,3}|21474836[0-3][0-9]{1,2}|214748364[0-7]

Может быть, это поможет вам вспомнить.

Чиж
источник
12
Это звучит намного проще и веселее для меня. На самом деле это действительно намного проще, чем 2147483647. Это было бы очень
полезно
61

Вот как я вспомнил 2147483647:

  • 214 - потому что 2,14 примерно пи-1
  • 48 = 6 * 8
  • 64 = 8 * 8

Напишите это по горизонтали:

214_48_64_
and insert:
   ^  ^  ^
   7  3  7 - which is Boeing's airliner jet (thanks, sgorozco)

Теперь у вас есть 2147483647.

Надеюсь, это поможет хоть немного.

Миколай Розвадовский
источник
3
Хороший! Я думаю, что правило 214 должно быть пи - 1. Также маска показывает 68, а не 64. =) Для любителей авиации, таких как я, значение 737 должно быть легко запомнить, связывая его со средним самолетом Боинга среднего размера.
Вы можете пойти дальше, чем это. Бросьте десятичную дробь и сравните число пи и 2 ^ 31-1. В тех же позициях вы получаете 141 против 147, поэтому последняя цифра просто становится 7. Тогда 592 против 483, все на одну цифру друг от друга. И 643 против 647, это то, что снова становится 7.
Питер Купер
@PeterCooper Альто десятичные дроби для числа Пи начинаются с 1415926_5_35 (обратите внимание на 5, а не на 4)
Моберг
15
Моя мнемоника состоит в том, чтобы взять 4294967296 (что легко запомнить) и разделить на 2
MM
56
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 ^ 16 ~ = 64 тыс. // уинт16
  • 2 ^ 32 ~ = 4 миллиарда // uint32, IPv4, unixtime
  • 2 ^ 64 ~ = 16 квинтиллионов (16 миллиардов или 16 миллионов триллионов) // uint64, "bigint"
  • 2 ^ 128 ~ = 256 квинтиллионов квинтиллионов (или 256 триллионов триллионов триллионов) // IPv6, GUID
Клин
источник
76
Вот что говорили производители жестких дисков.
Скотт Стаффорд
46

Просто возьмите любой приличный калькулятор и введите «7FFFFFFF» в шестнадцатеричном режиме, затем переключитесь на десятичную.

2147483647.

Darron
источник
150
Любой приличный калькулятор тоже может сделать 2 ^ 31.
Кристофер
17
Я не знаю, 2 ^ 31 кажется длинным путем, чтобы сделать это: /
Штаты
2
Или просто запомните это в шестнадцатеричном формате
Вернон
4
Просто ... напиши это в шестнадцатеричном виде. Или Int32.MaxValue/numeric_limits<int32_t>::max()
Сехе
8
@Christoffer Это на самом деле 2 ^ 31 - 1 :)
kupsef
36

Это о 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

C ++ 11

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 2

Python имеет произвольные целые числа точности. Но в Python 2 они отображаются на целые числа C. Так что вы можете сделать это:

import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L

Таким образом, Python переключается на longкогда целое число становится больше, чем2^31 -1

Мартин Тома
источник
Ответ Python устарел, см .: stackoverflow.com/questions/13795758/…
NOhs
@ Нет, я ценю ссылку, но мой ответ на Python о "Python 2" (я добавляю 2 к названию раздела, чтобы сделать его более понятным). Так что мой ответ не устарел. (Но Python 2, по общему признанию, есть)
Мартин Тома
35

Вот мнемоника для запоминания 2 ** 31, вычтите единицу, чтобы получить максимальное целочисленное значение.

а = 1, B = 2, с = 3, d = 4, е = 5, F = 6, г = 7, ч = 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.

Марк Рэнсом
источник
3
Что вы делаете для 2 ^ 10, 2 ^ 11, 2 ^ 12 или 2 ^ 17 (все из которых имеют нули)?
суперкат
2
@supercat Я бы либо перебазировал a = 0, либо использовал o = 0.
Марк Рэнсом
Это круто. Спасибо, ты спас мне жизнь.
Ченц
31

32 бита, один для знака, 31 бит информации:

2^31 - 1 = 2147483647

Почему -1?
Поскольку первое - ноль, то самое большое - это число минус один .

РЕДАКТИРОВАТЬ для 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
авиационно-космический
источник
@ cantfindaname88: 2 ^ 31 = общее количество комбинаций, поэтому оно варьируется от 0 до (2 ^ 31 -1). Да, первый - 0.
Лучано
30

Ну, он имеет 32 бита и, следовательно, может хранить 2 ^ 32 различных значений. Половина из них отрицательны.

Решение - 2 147 483 647

И самый низкий - -2 147 483 648.

(Обратите внимание, что есть еще одно отрицательное значение.)

Sarien
источник
Он имеет 32 бита и, следовательно, может хранить 2 ^ 32 значения. Не менее.
JB.
28

Ну, кроме шуток, если вы действительно ищете полезное правило памяти, есть одно, которое я всегда использую для запоминания больших чисел.

Вам нужно разбить ваш номер на части из 3-4 цифр и запомнить их визуально, используя проекцию на клавиатуре вашего мобильного телефона. Проще показать на картинке:

введите описание изображения здесь

Как вы можете видеть, теперь вам нужно запомнить только 3 фигуры, две из которых выглядят как тетрис L, а одна - как галочка . Что, безусловно, намного проще, чем запоминание 10-значного числа.

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

Просто убедитесь, что вы помните направление фигур и количество цифр в каждой форме (например, в примере 2147483647 у нас есть 4-значный Tetris L и 3-значный L).

Вы можете использовать эту технику, чтобы легко запомнить любые важные цифры (например, я запомнил 16-значный номер кредитной карты и т. Д.).

Иван Юрченко
источник
Идеальная идея! Форма 1 дает вам 2147, Форма 2 дает вам 483, а Форма 3 должна давать 647, но, как показано, ее можно интерпретировать как 6 5 47. Как я знаю, когда включать все скрещенные числа (как в Форме 1 ) и когда пропустить некоторые (как в форме 3)? Вы также должны запомнить, что фигуры кодируют 4, 3 и 3 цифры соответственно. Или вы можете нарисовать форму 3 с дугой от 6 до 4 вместо прямой линии.
Jskroch
@Squinch Хорошо, особенно для запоминания int.Max это не должно быть проблемой, так как вы можете знать, что это около 2 миллиардов, поэтому в нем 10 чисел (это означает, что если первая фигура имеет 4 числа, то вторая и третья). формы имеют 3 соответственно). Тем не менее, это хороший момент, если вы хотите использовать этот подход для любого числа. Кроме того, есть цифры, которые трудно запомнить с помощью этого способа (например, 1112 или что-то). С другой стороны, запоминать такой номер в любом случае не составит труда. Так что я бы сказал, что это зависит от вас, дайте мне знать, если вы придумали что-нибудь интересное для этого. :)
Иван Юрченко
Да, я думал об использовании этого метода для вызова произвольной последовательности цифр, но для этого конкретного значения int.Max ваш метод работает довольно хорошо. Как вы сказали, повторяющиеся цифры являются проблемой. На самом деле любая повторяющаяся последовательность (например, 2323) является проблемой. Любую последовательность, которая пересекает себя (например, 2058), трудно нарисовать. Любая техника запоминания требует, чтобы вы запомнили несколько частей информации. Это личное предпочтение, какие типы информации лучше всего придерживаются в вашей голове.
Jskroch
1
Вот так я запоминаю пин-коды и тому подобное, но вдруг вам нужно набрать их на своем компьютере и понять, что цифровая клавиатура перевернута вертикально. Так что это немного сложно.
нибариус
Кто-то в Далласе, штат Техас , получил много странных телефонных звонков и не подозревает, что вы, @IvanYurchenko, виноваты.
Боб Стейн
21

Самый простой способ сделать это для целых чисел - это использовать шестнадцатеричное при условии, что нет ничего похожего на 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 бита. Кроме того, многие компиляторы поддерживают hex намного лучше, чем двоичный.

F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000

Так что 7F равно 01111111 / 7FFF равно 0111111111111111. Кроме того, если вы используете это для «безумно высокой константы», 7F ... это безопасный гекс, но достаточно просто попробовать 7F и 80 и просто напечатать их на ваш экран, чтобы увидеть, какой это.

0x7FFF + 0x0001 = 0x8000, так что ваш убыток составляет всего одно число, поэтому использование 0x7F ... обычно не является плохим компромиссом для более надежного кода, особенно если вы начнете использовать 32-битные или более

Джо Планте
источник
21

Сначала запишите 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 больше в абсолютном значении чем положительный предел.

Потренируйтесь несколько раз, и вы освоите это!

Sнаđошƒаӽ
источник
«1 больше по абсолютной величине, чем положительный предел» получил меня.
Навин
20

2 Гб

(есть ли минимальная длина для ответов?)

руна
источник
18
Разве это не должно быть GiB?
Джук ван дер Маас
9
@JoukevanderMaas - На самом деле это должно быть 4B.
Тед Хопп
1
Вот почему лимит ОЗУ, который вы можете иметь на 32-битном компьютере, составляет 4 ГБ
Серж Саган,
3
значение 4 ГБ является правильным с целыми числами без знака. если у вас есть int со знаком, вам, очевидно, нужно разделить на 2, чтобы получить максимально возможное значение
SwissCoder
3
В 32-разрядной системе имеется 2 ГБ резерва пространства памяти для пользовательского процесса и 2 ГБ для ядра. Его можно настроить так, чтобы ядру было зарезервировано только 1 ГБ
Rune
15

Предполагая .NET -

Console.WriteLine(Int32.MaxValue);
Кев
источник
15

Если вам случается знать свою таблицу ASCII наизусть, а не MaxInt:
!GH6G = 21 47 48 36 47

Марк Херд
источник
Когда я писал этот ответ, я не знал, что у GH6G было так много хитов Google, и теперь я сам использовал это :-)
Марк Херд
15

Лучшее правило для запоминания:
21 (магическое число!)
47 (просто запомни)
48 (последовательное!)
36 (21 + 15, обе магические!)
47 снова

Также легче запомнить 5 пар, чем 10 цифр.

Leandro
источник
14

Самый простой способ запомнить это посмотреть на std::numeric_limits< int >::max()

Например ( из MSDN ),

// numeric_limits_max.cpp

#include <iostream>
#include <limits>

using namespace std;

int main() {
   cout << "The maximum value for type float is:  "
        << numeric_limits<float>::max( )
        << endl;
   cout << "The maximum value for type double is:  "
        << numeric_limits<double>::max( )
        << endl;
   cout << "The maximum value for type int is:  "
        << numeric_limits<int>::max( )
        << endl;
   cout << "The maximum value for type short int is:  "
        << numeric_limits<short int>::max( )
        << endl;
}
Seq
источник
14

Интересно, что Int32.MaxValue содержит больше символов, чем 2 147 486 647.

Но опять же, у нас есть завершение кода,

Так что я думаю, что все, что нам действительно нужно запомнить - Int3<period>M<enter>это всего 6 символов, которые можно набрать в визуальной студии.

ОБНОВЛЕНИЕ Почему-то я был понижен. Единственная причина, по которой я могу придумать, заключается в том, что они не поняли мое первое утверждение.

«Int32.MaxValue» занимает не более 14 символов для ввода. 2,147,486,647 требует 10 или 13 символов для ввода в зависимости от того, введены вы запятые или нет.

Не я
источник
2
Но важнее не то, сколько символов вы должны набрать, а то, как это запомнить. Я уверен, что Iwannagohomeлегче запомнить, чем 298347829. Никаких причин для -1, однако.
glglgl
3
Это может быть меньше, просто сделайте свой собственный фрагмент максимального значения, возможно, «imv» <tab> <tab>?
BradleyDotNET
4
!=Клавиши персонажей . Для этого бедного пользователя .Net это in+ .+ ma+ Return.
Майкл - Где Клэй Ширки
11

Просто помните, что 2 ^ (10 * x) - это примерно 10 ^ (3 * x) - вы, вероятно, уже привыкли к этому с килобайтами / кибибайтами и т. Д. То есть:

2^10 = 1024                ~= one thousand
2^20 = 1024^2 = 1048576    ~= one million
2^30 = 1024^3 = 1073741824 ~= one billion

Поскольку int использует 31 бит (+ ~ 1 бит для знака), просто удвойте 2 ^ 30, чтобы получить приблизительно 2 миллиарда. Для беззнакового int, использующего 32 бита, снова удваивается для 4 миллиардов. Коэффициент ошибок тем больше, чем больше вы идете, конечно, но вам не нужно запоминать точное значение (если вам это нужно, вы все равно должны использовать предопределенную константу для него). Приблизительное значение достаточно для того, чтобы заметить, когда что-то опасно близко к переполнению.

Брайан
источник
10
Оффтоп: 2 ^ 4 = 4 ^ 2, поэтому возведение в степень коммутативно!
Адам Лисс
10
@ Pier-OlivierThibault Нет, я использую его все время! теперь мне нужно выяснить, почему вся моя математика выходит из строя. вероятно, что-то делать с ошибками умножения. во всяком случае, пока!
tckmn
9

вот как я это запомнил 2 147 483 647

В далекой четверти саванны Оптимус трио проклял сорок семилетний

2 - To
1 - A
4 - Far
7 - Savannah
4 - Quarter
8 - Optimus
3 - Trio
6 - Hexed
4 - Forty
7 - Septenary
Самуил
источник
7

Что вы имеете в виду? Должно быть достаточно легко запомнить, что это 2 ^ 32. Если вы хотите, чтобы правило запоминало значение этого числа, удобное эмпирическое правило предназначено для преобразования между двоичным и десятичным в целом:

2 ^ 10 ~ 1000

что означает 2 ^ 20 ~ 1 000 000

и 2 ^ 30 ~ 1 000 000 000

Вдвое больше (2 ^ 31) составляет около 2 миллиардов, а вдвое больше (2 ^ 32) - 4 миллиарда.

Это простой способ получить приблизительную оценку любого двоичного числа. 10 нулей в двоичном виде становятся 3 нулями в десятичном виде.

jalf
источник
7
но это не 2 ^ 32 - это (2 ^ 31) -1
Стив Фолли
6

В Objective-C (iOS и OSX) просто запомните эти макросы:

#define INT8_MAX         127
#define INT16_MAX        32767
#define INT32_MAX        2147483647
#define INT64_MAX        9223372036854775807LL

#define UINT8_MAX         255
#define UINT16_MAX        65535
#define UINT32_MAX        4294967295U
#define UINT64_MAX        18446744073709551615ULL
juniperi
источник
5

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

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

От +2147483647 до -2147483648

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

+9223372036854775807 до -9223372036854775808

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

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


источник
2
Большинство современных компьютеров хранят числа в формате «комплимент». Самый старший (не самый низкий) бит - это знак. Изюминка в конкуренции между двумя состоит в том, что все числа обрабатываются естественными правилами переполнения ЦП. то есть 0xFF - это 8 бит -1, добавьте это к 0x01 (+1), и вы получите 0x100. Обрежьте биты выше 8 до 0x00, и вы получите ответ.
Том Лейс
5

Помните это: 21 IQ ITEM 47

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

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

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

soprof
источник
Что вы имеете в виду de-encoded with any phone pad?
mcExchange