Domanda

Non mi ricordo il numero.Ho bisogno di una memoria regola.

È stato utile?

Soluzione

È a 2.147.483.647.Modo più semplice per memorizzare, tramite un tatuaggio.

Altri suggerimenti

La più corretta risposta che ho trovato è Int32.MaxValue.

Se pensate che il valore è troppo difficile da ricordare, in base 10, tenta di base 2:1111111111111111111111111111111

se ricordate, il tutto Pi il numero, quindi il numero che si sta cercando è in posizione 1,867,996,680 fino 1,867,996,689 delle cifre decimali di Pi

La stringa numerica 2147483647 appare in 1,867,996,680 cifra decimale di Pi.3.14......86181221809936452346214748364710527835665425671614...

fonte: http://www.subidiom.com/pi/

10 cifre, in modo da fingere è un numero di telefono (supponendo che si sta in NOI).214-748-3647.Io non consiglio di chiamarlo.

Piuttosto che pensare ad esso come un grande numero, tenta di rompere verso il basso e cercando associati idee, ad esempio:

  • 2 massimo snooker interruzioni (per un massimo di rottura è di 147)
  • 4 anni (48 mesi)
  • 3 anni (36 mesi)
  • 4 anni (48 mesi)

Quanto sopra vale per il più grande numero negativo;di positivo è che meno uno.

Forse la ripartizione modale sarà più memorabile per voi (non è certo entusiasmante è!), ma speriamo che si può venire con alcune idee che sono!

Più negativi (32bit) valore :-2147483648
(1 << 31)

Più grande positivo (32bit) valore :2147483647
~(1 << 31)

Mnemonico:"ubriaco AKA cornea"

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

Comunque, a prendere questa regex (determina se la stringa contiene un numero Intero non negativo in forma decimale, che è anche non di più, 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]

Forse sarebbe aiuterà a ricordare.

Che è come me la ricordavo 2147483647:

  • 214 - perché 2.14 è di circa pi-1
  • 48 = 6*8
  • 64 = 8*8

Scrivere queste orizzontalmente:

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

Ora hai 2147483647.

Spero che questo aiuta almeno un po'.

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

In questo modo, 2^31 (signed int max) è di 2^30 (circa 1 miliardo) volte 2^1 (2), o circa 2 miliardi di euro.E 2^32 2^30 * 2^2 ovvero circa 4 miliardi di euro.Questo metodo di approssimazione è abbastanza preciso, anche per intorno a 2^64 (dove l'errore cresce di circa il 15%).

Se avete bisogno di una risposta esatta, allora si dovrebbe tirare su una calcolatrice.

Pratico word-allineati capacità di approssimazioni:

  • 2^16 ~= 64 mila // uint16
  • 2^32 ~= 4 miliardi di euro // uint32, IPv4, unixtime
  • 2^64 ~= 16 quintilioni (aka 16 miliardi di miliardi o 16 milioni di trilioni) // uint64, "bigint"
  • 2^128 ~= 256 quintilioni di quintilioni (aka 256 milioni di miliardi di miliardi di miliardi di miliardi) // IPv6, GUID

Basta prendere qualsiasi decente calcolatrice e digitare "7FFFFFFF" in modalità esadecimale, poi passare a un decimale.

2147483647.

Si tratta di circa 2.1 * 10^9.Non c'è bisogno di conoscere l'esatta 2^{31} - 1 = 2,147,483,647.

C

Lo si può trovare in C così:

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

dà (beh, senza il ,)

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

È possibile ottenere questo con Java, troppo:

System.out.println(Integer.MAX_VALUE);

Ma tenete a mente che Java numeri interi sono sempre firmati.

Python 2

Python ha una precisione arbitraria numeri interi.Ma in Python 2, sono assegnati a C numeri interi.Così si può fare questo:

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

Così Python interruttori per long quando l'intero diventa più grande di 2^31 -1

Ecco un mnemonico per ricordare 2**31, sottrarre uno per ottenere il massimo valore intero.

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

Ho usato i poteri di due fino a 18 abbastanza spesso per ricordare loro, ma anche io non ho preso la briga di memorizzare 2**31.È troppo facile da calcolare, come necessario, o utilizzare una costante, o la stima 2G.

32 bit, uno per il segno, 31 bit di informazioni:

2^31 - 1 = 2147483647

Perché -1?
Perché il primo è zero, in modo che il più grande è il contare meno uno.

MODIFICA per cantfindaname88

Il conteggio è di 2^31, ma il più grande non può essere 2147483648 (2^31), perché noi a contare da 0, non da 1.

Rank   1 2 3 4 5 6 ... 2147483648
Number 0 1 2 3 4 5 ... 2147483647

Un'altra spiegazione con solo 3 bit :1 per il segno, 2 per le informazioni

2^2 - 1 = 3

Di seguito tutti i valori possibili con 3 bit:(2^3 = 8 valori)

1: 100 ==> -4
2: 101 ==> -3
3: 110 ==> -2
4: 111 ==> -1
5: 000 ==>  0
6: 001 ==>  1
7: 010 ==>  2
8: 011 ==>  3

Bene, è a 32 bit e, quindi, in grado di memorizzare 2^32 valori diversi.La metà di quelli negativi.

La soluzione è 2.147.483.647

Il più basso è -2,147,483,648.

(Si noti che c'è un valore più negativo.)

A questo punto, direi che il modo più semplice mnemonico è di tipo "stackoverflow.com" SCHEDA "massimo int32" in Chrome.

C'è una ricorsione --> overflow dello stack scherzo lì da qualche parte.Sto solo non geek.

Bene, a parte gli scherzi, se siete veramente alla ricerca di un utile di memoria regola, c'è quella che io uso sempre per ricordare i grandi numeri.

È necessario abbattere il tuo numero in parti da 3-4 cifre e ricordare visivamente utilizzando la proiezione sul tuo telefono cellulare tastiera.E ' più facile per mostrare una foto:

enter image description here

Come si può vedere, da ora in poi basta ricordare 3 forme, 2 di loro appare come un Tetris L e si presenta come un tick.Che è sicuramente molto più facile che memorizzare un numero di 10 cifre.

Quando avete bisogno di ricordare il numero di richiamare le forme, immaginare/sguardo su una tastiera del telefono e di progetto, e le forme su di esso.Forse inizialmente dovrete guardare la tastiera, ma dopo un po ' di pratica, ti ricordo che i numeri stanno andando dall'alto a sinistra al basso a destra, in modo che si sarà in grado di immaginare nella tua testa.

Assicuratevi di ricordare la direzione di forme e il numero di cifre in ogni forma (per esempio, in 2147483647 esempio, abbiamo una cifra di 4 Tetris L e 3 cifre L).

È possibile utilizzare questa tecnica per ricordare facilmente qualsiasi numero importante (per esempio, mi sono ricordato dei miei 16 cifre della carta di credito etc.).

Il modo più semplice per fare questo per i numeri interi è quello di utilizzare esadecimale, a condizione che non ci sia qualcosa di simile a Int.maxInt().Il motivo è questo:

Max valori senza segno

8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Firmato valori, utilizzando 7F come il max valore con segno

8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF

Firmato valori, utilizzando 80 come il max valore con segno

8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000

Come si fa questo lavoro?Questo è molto simile al binario tattica, e ogni cifra esadecimale è esattamente 4 bit.Inoltre, un sacco di compilatori supportano hex molto meglio di quanto sostengono binario.

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

Così 7F è pari a 01111111 / 7FFF è pari a 0111111111111111.Inoltre, se si utilizza questo per "follemente alta costante", 7F...è sicuro hex, ma è abbastanza facile da provare 7F e 80 e basta stampare a schermo per vedere quale è.

0x7FFF + 0x0001 = 0x8000, in modo che la vostra perdita è solo un numero, in modo da utilizzare 0x7F...di solito non è un cattivo compromesso per un codice più affidabile, soprattutto una volta che si avvia utilizzando 32-bit o più

Prima di scrivere 47 due volte, (si come L'agente 47, giusto?), mantenere spazi come mostrato in figura (ogni dash è uno slot per una singola cifra.Primi 2 slot, quindi 4)

--47----47

Pensi di avere 12 in mano (perché 12 = una dozzina).Moltiplichiamo per 4, prima cifra dell'Agente 47 numero, cioè 47, e posto il risultato a destra della prima coppia è già

12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47

Quindi moltiplicare 12 da 3 (per fare la seconda cifra dell'Agente 47 numero, che è 7, è necessario 7 - 4 = 3) e mettere il risultato a destra delle prime 2 coppie, l'ultima coppia-slot

12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs

Infine trascinare le cifre una per una dalla tua mano a partire dalla cifra più a destra (2 in questo caso) e metterli nel primo slot vuoto si ottiene

2-47483647 <-- after placing 2
2147483647 <-- after placing 1

C'è l'ho!Per limite negativo, si può pensare a questo come 1 più valore assoluto rispetto al limite positivo.

Praticare un paio di volte, e si otterrà il blocco di esso!

2GB

(c'è una lunghezza minima per le risposte?)

Se vi capita di sapere la vostra Tabella ASCII fuori dal cuore e non MaxInt :
!GH6G = 21 47 48 36 47

La regola migliore per ricordarlo è:
21 (numero magico!)
47 (basta ricordare)
48 (sequenziale!)
36 (21 + 15, sia magics!)
47 di nuovo

Inoltre è più facile da ricordare 5 paia di 10 cifre.

Assumendo .NET -

Console.WriteLine(Int32.MaxValue);

È Interessante Notare Che, Int32.MaxValue ha più i caratteri di 2,147,486,647.

Ma poi di nuovo, abbiamo completamento del codice,

Quindi credo che tutti dobbiamo davvero imparare a memoria è Int3<period>M<enter>, che è solo di 6 caratteri tipo in visual studio.

AGGIORNAMENTO Per qualche motivo ero downvoted.L'unico motivo che posso pensare è che non hanno capito la mia prima affermazione.

"Int32.MaxValue" prende almeno 14 caratteri per tipo.2,147,486,647 prende 10 o 13 caratteri di tipo a seconda se si mettono le virgole o meno.

Il modo più semplice per ricordare è quello di guardare std::numeric_limits< int >::max()

Per esempio (da 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;
}

Basta ricordare che la 2^(10*x) è di circa 10^(3*x) - probabilmente siete già abituati a questo con kilobyte/kibibytes etc.Che è:

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

Dal momento che un int utilizza 31 bit (+ ~1 bit per il segno), basta fare doppio 2^30 di ottenere circa 2 miliardi di euro.Per un unsigned int utilizzando 32 bit, doppia ancora per 4 miliardi di euro.Il fattore di errore diventa più alto, il più grande si va, naturalmente, ma non è necessario l'esatto valore memorizzato (Se si ha bisogno di esso, si dovrebbe essere utilizzando un pre-definiti e costanti comunque).Il valore approssimativo è sufficiente per notare quando qualcosa potrebbe essere pericolosamente vicino all'inverosimile.

questo è come lo faccio ricordare a 2.147.483.647

Un savannah trimestre optimus trio sotto l'effetto di una quarantina di septenary

2 - To
1 - A
4 - Far
7 - Savannah
4 - Quarter
8 - Optimus
3 - Trio
6 - Hexed
4 - Forty
7 - Septenary

Che cosa vuoi dire?Dovrebbe essere abbastanza facile da ricordare che si tratta di 2^32.Se si desidera una regola per memorizzare il valore di tale numero, un pratico regola generale è che per la conversione tra binario e decimale in generale:

2^10 ~ 1000

il che significa 2^20 ~ 1.000.000 di

e 2^30 ~ 1.000.000.000 di

Doppio (2^31) è rounghly 2 miliardi di euro, e il raddoppio che ancora una volta (2^32) è di 4 miliardi di euro.

E ' un modo facile per ottenere una stima approssimativa di ogni numero binario.10 zeri in binario diventa di 3 zeri in decimale.

Come fisico, vorrei solo round per 2 miliardi di euro (semi-scherzo).Facile da ricordare!

In Objective-C (iOS e OSX), basta ricordare queste macro:

#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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top