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


1380

Я ніколи не можу згадати число. Мені потрібно правило пам'яті.


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
"якщо диск стане повним, видалення всіх mbytes буде архівовано" (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, що неправильно і було б бентежно.
Ларрі S

127
2,147,483,647 = 0x7FFFFFFF, якщо ви хочете запам'ятати це, просто використовуйте шістнадцятковий.
roottraveller

493

Найправильніша відповідь, яку я можу придумати, - це Int32.MaxValue.


18
Перш ніж це існувало, я використовував #define INT32_MIN та INT32_MAX у всіх своїх проектах.
WildJoe

45
@CamiloMartin Гей. Я обурююсь цим. Просто не було місця для більше татуювань. Очевидно, що шафа iso-8859-1, а пі - 31415 десятків мали отримати пріоритет
1313

3
Коли ви програмуєте: так у 99% випадків. Але, можливо, ви хочете знати, що це щось на зразок ~ 2 мільярда для планування підходів до програмування або роботи з даними, хоча це дуже велика кількість. :)
Andre Figueiredo

@sehe Невже latin1 / Windows 1252 застаріла? Якщо він не може вміститись у 7 байт ASCII, я не думаю, що він заслуговує на місце в основній пам'яті. Я маю на увазі ... всі кодові сторінки UNICODE начебто корисні, але над рівнем шкірного простору здається марним. (Не кажучи вже про це, досі не містяться описові гліфи для "pageup / pagedown" або "pagehome / pageend")

1
Цей властивість може бути корисною порадою додатково зазначити правильну кількість. Однак мені не подобається ця відповідь, оскільки вона лише згадує непридатний спосіб визначити значення, і він не згадує, для яких мов програмування це працює, або ...
mozzbozz

439

Якщо ви вважаєте, що значення занадто важко запам'ятати в базі 10, спробуйте базу 2: 111111111111111111111111111111111


145
@Nick Whaley: Ні, 1111111111111111111111111111111 позитивний. 11111111111111111111111111111111 буде негативним :-)
Сир

58
База 16 - це ще простіше 7FFFFFFF
Нельсон Гальдеман Граціано

34
@ Curd 11111111111111111111111111111111як число базового-2 все ще буде позитивним (приклад мінус-базис-2 буде -1) . Ця послідовність бітів є лише негативною, якщо представляє 32-розрядний номер 2-
ого

143
Найпростіше запам’ятати буде база 2,147,483,647. Тоді все, що вам потрібно запам’ятати - це 1.
big_tommy_7bb

82
@ tim_barber_7BB насправді, це 10.
fscheidl

317

якщо ви можете запам’ятати все число Pi, то число, яке ви шукаєте, знаходиться в положенні 1,867,996,680 до 1,867,996,689 десяткових цифр Pi

Числовий рядок 2147483647 відображається в 1,867,996,680 десяткових цифр Pi. 3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...

джерело: http://www.subidiom.com/pi/


30
ви знаєте, коли я почав читати вашу відповідь, я очікував чогось практичного, наприклад, 20-ту цифру.
JqueryToAddNumbers

95
Це здається досить крутим. Чи є у вас інше правило пам’яті, щоб запам’ятати 1,867,996,680? Мені важко згадати, з якого індексу почати шукати ....
Alderath

10
" якщо ви можете запам'ятати все число Pi ... " - ні, ви не можете, це нераціонально {як це можливо, одна чи дві публікації в цьому запитанні} 8-D
SlySven,

10
@Alderath Я зазвичай пам'ятаю це як 10 десяткових знаків у sqrt (2), починаючи з цифри 380 630 713 ....
Генрік

2
@Alderath: Числовий рядок 1867996680 відображається на 380 630 713-й десятковій цифрі квадратного кореня 2.
Yair Halberstadt

290

Це 10 цифр, тому зробіть вигляд, що це номер телефону (якщо ви знаходитесь в США). 214-748-3647. Не рекомендую телефонувати.


13
Якщо говорити про запам'ятовування його як номер телефону, то, здається, можуть бути деякі телефонні спамери, які використовують його: mrnumber.com/1-214-748-3647
Стівен

8
"У Далласі немає обміну" 748 ". Цей номер підроблений". - зі сторінки, пов’язаної shambleh
Тарнай Калман

104
@Steven Я не думаю, що вони є спамерами, просто людьми, які випадково зберегли номер телефону INTзамість VARCHARMySQL.
Зарель

8
Спробував називати це. Він задзвонив кілька разів, потім перейшов на сигнал набору помилок. = (
Критичний

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)

Мнемонічний: "п'яний AKA роговий"

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, ви можете запам'ятати це.
БенМ

11
@Rondles Я думаю, що це насправді 7253 наприкінці.
Тім Тісдалл

21
Ні. Вік алкоголю тут 18 років ... Здається, я не можу використати цю мнемоніку, моє життя зруйноване.
Джоффрі

4
@Aaren Cordova Раніше вони говорили, що stackoverflow ніколи не буде смішним, це не що інше, як сайт Q&A, я, як правило, вказую на цю відповідь. Ця річ може бути створена тільки всередині геніального розуму, я маю в виду це є мистецтво.
Мохд Абдул Муджіб

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 - це приблизно pi-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 повинно бути pi - 1. Також маска показує 68, а не 64. =) Для авіаційних любителів, як я, значення 737 слід легко запам’ятати, асоціюючи його з середнім розміром літака Boeing.

Ви можете піти далі від цього. Відкиньте десятковий і порівняйте pi і 2 ^ 31-1. У тих же позиціях ви отримуєте 141 проти 147, тож остання цифра просто стає 7. Тоді 592 проти 483, це одна цифра одна від одної. І 643 проти 647, це те, що знову стає 7 справою.
Пітер Купер

@PeterCooper Всім десяткових знаків для пі починається з 1415926_5_35 (зверніть увагу на 5, а не на 4)
Moberg

15
Моя мнемоніка - взяти 4294967296 (що легко запам'ятати) і розділити на 2
ММ

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 тис. // uint16
  • 2 ^ 32 ~ = 4 мільярди // uint32, IPv4, unixtime
  • 2 ^ 64 ~ = 16 квінтільйона (він же 16 мільярдів мільярдів або 16 мільйонів трильйонів) // uint64, "bigint"
  • 2 ^ 128 ~ = 256 квінтільйонних квінтільйон (він же 256 трлн трильйонів) // IPv6, GUID

76
Ось що сказали виробники жорстких дисків.
Скотт Стаффорд

46

Просто візьміть будь-який гідний калькулятор і введіть "7FFFFFFF" у шестигранному режимі, а потім перейдіть до десяткового.

2147483647.


150
Будь-який гідний калькулятор також може зробити 2 ^ 31.
Крістофер

17
Я не знаю 2 ^ 31, здається, довгий шлях до цього: /
Штати

2
Або просто запам'ятайте це в шістнадцять
Вернон

4
Просто ... напишіть це шістнадцятково. Або Int32.MaxValue/numeric_limits<int32_t>::max()
sehe

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

Ви також можете отримати це за допомогою Java:

System.out.println(Integer.MAX_VALUE);

Але майте на увазі, що цілі Java завжди підписані.

Пітон 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

@NOhs Я ціную посилання, але моя відповідь Python стосується "Python 2" (я додаю 2 до назви розділу, щоб зробити це більш зрозумілим). Тож моя відповідь не застаріла. (Але, правда, Python 2)
Мартін Тома

35

Ось мнемоніка для запам'ятовування 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.


3
Що ви робите для 2 ^ 10, 2 ^ 11, 2 ^ 12 або 2 ^ 17 (усі вони мають нулі)?
supercat

2
@supercat Я або перезавантажував a = 0, або використовував o = 0.
Марк Викуп

Це круто. Спасибі, ти врятуєш мені життя.
Ченц

31

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

2^31 - 1 = 2147483647

Чому -1?
Тому що перший дорівнює нулю, тому найбільшим вважається підрахунок мінус один .

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

@ cantfindaname88: 2 ^ 31 = загальна кількість комбінацій, тому вона коливається від 0 до (2 ^ 31 -1). Так, перший - 0.
Лучано

30

Ну, він має 32 біти, а значить, може зберігати 2 ^ 32 різних значення. Половина таких негативних.

Розчин 2,147,483,647

А найнижчий - -2,147,483,648.

(Зауважте, що є ще одне негативне значення.)


Він має 32 біти і, отже, може зберігати 2 ^ 32 значення. Не менше.
JB.

28

Ну, окрім жартів, якщо ти справді шукаєш корисного правила пам’яті, є одне, яке я завжди використовую для запам'ятовування великих чисел.

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

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

Як бачите, відтепер ви просто повинні запам'ятати 3 фігури, 2 з них схожі на тетріс 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
Ось так я пам’ятаю пін-коди і подібне, але раптом вам потрібно набрати його на комп’ютері і зрозуміти, що цифра перевернута вертикально. Тож це трохи непростий виклик.
nibarius

Хтось із Далласу, штат Техас , отримав багато дивних телефонних дзвінків і не здогадується, що ви @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 біт. Крім того, багато компіляторів підтримують шістнадцятковий розмір набагато краще, ніж вони підтримують двійкові.

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 , правда?), Зберігаючи пробіли, як показано (кожен тире - це слот для однієї цифри. Перші два слоти, потім 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 більше в абсолютній величині, ніж позитивний межа.

Попрактикуйтесь кілька разів, і ви отримаєте повісити його!


"1 більше в абсолютній величині, ніж позитивна межа" отримав мене.
Навін

20

2 Гб

(чи є мінімальна довжина відповідей?)


18
Чи не повинен це бути GiB?
Жоук ван дер Маас

9
@JoukevanderMaas - Насправді це має бути 4B.
Тед Хопп

1
Ось чому ліміт оперативної пам’яті, який ви можете мати на 32-бітному комп’ютері, становить 4 Гб
Serj Sagan

3
значення 4 Гб є правильним для непідписаних цілих чисел. якщо у вас є підписаний int, вам, очевидно, потрібно розділити на 2, щоб отримати максимальне значення
SwissCoder

3
У 32-бітовому є 2 ГБ запасу простору пам’яті для користувальницького процесу та 2 ГБ для ядра. Він може бути налаштований так, щоб у ядра було зарезервовано лише 1 ГБ
Руна,


15

Якщо ви випадково знаєте свій стіл ASCII напам'ять, а не MaxInt:
!GH6G = 21 47 48 36 47


Коли я писав цю відповідь, я не знав, що в GH6G було так багато звернень у Google, і тепер я сам це використав :-)
Марк Херд,

15

Найкраще правило для запам'ятовування це:
21 (магічне число!)
47 (просто запам'ятайте це)
48 (послідовне!)
36 (21 + 15, обидва маги!)
47 знову

Також простіше запам'ятати 5 пар, ніж 10 цифр.


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;
}

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 nope, я використовую це весь час! тепер мені потрібно з’ясувати, чому вся моя математика виходить неправильною. ймовірно, щось стосується помилок множення. все одно, до побачення!
Дверноруб

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 нулями в десяткових.


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

5

Int32 означає, що у вас є 32 біти для зберігання вашого номера. Найвищий біт - це бітовий знак, це вказує, чи є число позитивним чи негативним. Отже, у вас є 2 ^ 31 біт для додатних і від’ємних чисел.

Якщо нуль є позитивним числом, ви отримуєте логічний діапазон (згаданий раніше)

+2147483647 до -2147483648

Якщо ви вважаєте, що це мало, використовуйте Int64:

+9223372036854775807 до -9223372036854775808

І чому, до біса, ти хочеш запам'ятати це число? Щоб використовувати у своєму коді? Ви завжди повинні використовувати Int32.MaxValue або Int32.MinValue у своєму коді, оскільки це статичні значення (в ядрі .net) і, таким чином, швидше у використанні, ніж створення нового int з кодом.

Мій вислів: якщо знати це число по пам’яті .. ти просто показуєшся!


2
Більшість сучасних комп'ютерів зберігають номери у форматі «подвійний комплімент». Найвищий (не найнижчий) біт - це знак. Акуратною річчю з двома умовами є те, що -ve номери обробляються природними правилами переповнення ЦП. тобто 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 і не люблю предмети в роті".


Що ти маєш на увазі de-encoded with any phone pad?
mcExchange
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.