Numarayý asla hatýrlayamýyorum. Bir hafıza kuralına ihtiyacım var.
Numarayý asla hatýrlayamýyorum. Bir hafıza kuralına ihtiyacım var.
Yanıtlar:
2.147.483.647. Ezberlemenin en kolay yolu bir dövme ile.
Integer.MAX_VALUE
Java'da kullanın .
Aklıma gelen en doğru cevap Int32.MaxValue
.
Baz 10'da değerin hatırlanması çok zor düşünüyorsanız, baz 2'yi deneyin: 111111111111111111111111111111111
11111111111111111111111111111111
taban-2 sayısı olarak curd hala pozitif olur (baz-2'de negatif bir örnek olur -1
) . Bu bit dizisi yalnızca 32 bit 2'nin tamamlayıcı numarasını temsil ediyorsa negatiftir :)
Pi numarasının tamamını hatırlayabiliyorsanız, aradığınız sayı Pi'nin ondalık basamağının 1.867.996.689'a kadar 1.867.996.680 pozisyonundadır.
Sayısal dize 2147483647, Pi'nin 1.867.996.680 ondalık basamağında görünür. 3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...
kaynak: http://www.subidiom.com/pi/
10 basamaklı, bu yüzden bir telefon numarası gibi davranın (ABD'de olduğunuzu varsayarak). 214-748-3647. Aramanı tavsiye etmiyorum.
INT
yerine yanlışlıkla saklayan insanlar VARCHAR
.
Bunu büyük bir sayı olarak düşünmek yerine, parçalamayı ve ilişkili fikirleri aramayı deneyin, örneğin:
Yukarıdaki en büyük negatif sayı için geçerlidir; pozitif, eksi bir.
Belki de yukarıdaki arıza sizin için daha fazla unutulmaz olmayacak (bu pek heyecan verici değil!), Ama umarım bazı fikirler bulabilirsin!
2^(31!)
yoksa (2^31)!
?
En büyük negatif (32 bit) değeri: -2147483648
(1 << 31)
En büyük pozitif (32bit) değeri: 2147483647
~ (1 << 31)
Anımsatıcı: "sarhoş AKA azgın"
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
Her neyse, bu normal ifadeyi alın (dizenin ondalık formda Int32.MaxValue değerinden büyük olmayan, negatif olmayan bir Tamsayı içerip içermediğini belirler)
[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]
Belki hatırlamanıza yardımcı olur.
2147483647
. Bu OP için çok yardımcı olacaktır
Ben böyle hatırladım 2147483647
:
Bunları yatay olarak yazın:
214_48_64_
and insert:
^ ^ ^
7 3 7 - which is Boeing's airliner jet (thanks, sgorozco)
Şimdi 2147483647 var.
Umarım bu en azından biraz yardımcı olur.
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
Yani, 2 ^ 31 (işaretli int max) 2 ^ 30 (yaklaşık 1 milyar) çarpı 2 ^ 1 (2) veya yaklaşık 2 milyar'dır. Ve 2 ^ 32, 2 ^ 30 * 2 ^ 2 veya yaklaşık 4 milyar'dır. Bu yaklaşım yöntemi, yaklaşık 2 ^ 64'e kadar (hata yaklaşık% 15'e kadar büyür) bile yeterince doğrudur.
Kesin bir cevaba ihtiyacınız varsa bir hesap makinesi çıkarmalısınız.
Kullanışlı kelime uyumlu kapasite yaklaşımları:
Sadece iyi bir hesap makinesi alın ve onaltılık modunda "7FFFFFFF" yazın, sonra ondalık sayıya geçin.
2147483647.
Int32.MaxValue
/numeric_limits<int32_t>::max()
Hakkında 2.1 * 10^9
. Kesin bilmeye gerek yok 2^{31} - 1 = 2,147,483,647
.
C'de bu şekilde bulabilirsiniz:
#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);
}
verir (iyi, olmadan ,
)
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";
Bunu Java ile de alabilirsiniz:
System.out.println(Integer.MAX_VALUE);
Ancak, Java tam sayılarının her zaman imzalandığını unutmayın.
Python keyfi hassasiyet tamsayılarına sahiptir. Ancak Python 2'de, C tamsayılarıyla eşlenirler. Böylece bunu yapabilirsiniz:
import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L
Böylece Python long
, tamsayı daha büyük olduğunda2^31 -1
İşte 2 ** 31'i hatırlamak için bir anımsatıcı, maksimum tamsayı değerini almak için birini çıkarın.
a = 1, b = 2, c = 3, d = 4 e = 5, K = 6, gr = 7, s = 8, i 9 =
Boys And Dogs Go Duck Hunting, Come Friday Ducks Hide
2 1 4 7 4 8 3 6 4 8
Onları hatırlamak için yeterince 18'e kadar ikisinin güçlerini kullandım, ama ben bile 2 ** 31'i ezberlemekten rahatsız olmadım. Gerektiği gibi hesaplamak veya sabit kullanmak veya 2G olarak tahmin etmek çok kolaydır.
32 bit, biri tabela için, 31 bit bilgi:
2^31 - 1 = 2147483647
Neden -1?
Birincisi sıfır olduğundan, en büyüğü sayım eksi birdir .
Cantfindaname88 için EDIT
Sayı 2 ^ 31'dir ancak en büyük 2147483648 (2 ^ 31) olamaz çünkü 1'den değil 0'dan sayıyoruz.
Rank 1 2 3 4 5 6 ... 2147483648
Number 0 1 2 3 4 5 ... 2147483647
Sadece 3 bit içeren başka bir açıklama: 1 işaret için, 2 bilgi için
2^2 - 1 = 3
3 bitli tüm olası değerlerin altında: (2 ^ 3 = 8 değer)
1: 100 ==> -4
2: 101 ==> -3
3: 110 ==> -2
4: 111 ==> -1
5: 000 ==> 0
6: 001 ==> 1
7: 010 ==> 2
8: 011 ==> 3
Şakaların yanı sıra, gerçekten yararlı bir hafıza kuralı arıyorsanız, her zaman büyük sayıları hatırlamak için kullandığım bir kural vardır.
Numaranızı 3-4 basamaktan parçalara ayırmanız ve cep telefonu klavyenizdeki projeksiyonu kullanarak bunları görsel olarak hatırlamanız gerekir. Bir resimde göstermek daha kolaydır:
Gördüğünüz gibi, şu andan itibaren 3 şekli hatırlamanız gerekiyor, ikisi Tetris L'ye ve biri kene gibi görünüyor . Bu kesinlikle 10 basamaklı bir sayıyı ezberlemekten çok daha kolaydır.
Numarayı hatırlamanız gerektiğinde şekilleri hatırlayın, bir telefon klavyesinde hayal edin / bakın ve şekilleri üzerine yansıtın. Belki de başlangıçta klavyeye bakmanız gerekir, ancak biraz pratik yaptıktan sonra, sayıların soldan sağa doğru gittiğini hatırlarsınız, böylece sadece kafanızda hayal edebileceksiniz.
Şekillerin yönünü ve her bir şekildeki rakam sayısını hatırladığınızdan emin olun (örneğin, 2147483647 örneğinde 4 basamaklı Tetris L ve 3 basamaklı L var).
Bu tekniği, önemli sayıları kolayca hatırlamak için kullanabilirsiniz (örneğin, 16 basamaklı kredi kartı numaramı hatırladım).
Tamsayılar için bunu yapmanın en kolay yolu, Int.maxInt () gibi bir şey olmaması koşuluyla onaltılık kullanmaktır. Nedeni şudur:
Maksimum imzalanmamış değerler
8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
İşaretli değerler, maksimum işaretli değer olarak 7F kullanılarak
8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF
İşaretli değerler, maksimum işaretli değer olarak 80 kullanılarak
8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000
Bu nasıl çalışıyor? Bu ikili taktiğe çok benzer ve her onaltılı basamak tam olarak 4 bittir. Ayrıca, bir çok derleyici, ikili desteği desteklediğinden çok daha iyi hex'i destekler.
F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000
Yani 7F eşittir 01111111 / 7FFF eşittir 0111111111111111. Ayrıca, bunu "delicesine yüksek sabit" için kullanıyorsanız, 7F ... güvenli altıgen, ancak 7F ve 80'i denemek ve yazdırmak için yeterince kolaydır hangisinin olduğunu görmek için ekranınıza.
0x7FFF + 0x0001 = 0x8000, bu nedenle kaybınız sadece bir sayıdır, bu nedenle 0x7F kullanmak, özellikle 32 bit veya daha fazla kullanmaya başladıktan sonra daha güvenilir kod için genellikle kötü bir tutar değildir.
47 üzerinden İlk yazma iki kez (sizin gibi Ajan 47 , değil mi?), Gösterildiği gibi boşlukları tutarak (her çizgi bir tek basamak için bir yuvadır. İlk 2 yuvaları, ardından 4)
--47----47
Elinizde olduğunu düşünün 12
(çünkü 12 = bir düzine). 4
Ajan 47'nin numarasının ilk basamağıyla çarpın , yani 47
sonucu zaten sahip olduğunuz ilk çiftin sağına yerleştirin
12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47
Sonra çarpma 12
tarafından 3
(olan Ajan 47 numarası, ikinci haneyi yapmak için 7
ihtiyacınız, 7 - 4 = 3
ve ilk 2 çift sağında, son çifti yuvalı sonucu koymak)
12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs
Son olarak rakamları elinizden en sağdaki rakamdan başlayarak tek tek sürükleyin (bu örnekte 2) ve aldığınız ilk boş yuvaya yerleştirin
2-47483647 <-- after placing 2
2147483647 <-- after placing 1
İşte aldın! Negatif sınır için, bunu mutlak değerde 1 daha düşünebilirsiniz pozitif sınırdan .
Birkaç kez pratik yapın ve asın!
2GB
(cevaplar için minimum bir süre var mı?)
Eğer bilmek edersek ASCII tablosunu ezbere değil kapalı MaxInt
:
!GH6G = 21 47 48 36 47
Hatırlamanın en kolay yolu std::numeric_limits< int >::max()
Örneğin ( MSDN'den ),
// 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;
}
İlginçtir, Int32.MaxValue, 2.147.486.647'den daha fazla karaktere sahiptir.
Ama sonra tekrar kod tamamlamamız var,
Bu yüzden ezberlemek zorunda olduğumuz Int3<period>M<enter>
tek şey , görsel stüdyoda yazmak için sadece 6 karakter.
GÜNCELLEME Bir nedenden dolayı indirildim. Düşünebilmemin tek nedeni ilk ifademi anlamadıkları.
"Int32.MaxValue" yazılması en fazla 14 karakter alır. 2.147.486.647 virgül koyup koymamanıza bağlı olarak yazması 10 veya 13 karakter alır.
Iwannagohome
hatırlamak daha kolay 298347829
. Ancak -1 için bir neden yok.
!=
Tuş Vuruşları. Bu zayıf .Net kullanıcısı için in
+ .
+ ma
+ Dönüş.
Sadece 2 ^ (10 * x) 'in yaklaşık 10 ^ (3 * x) olduğunu unutmayın - muhtemelen buna zaten kilobayt / kibibit vb.
2^10 = 1024 ~= one thousand
2^20 = 1024^2 = 1048576 ~= one million
2^30 = 1024^3 = 1073741824 ~= one billion
Bir int 31 bit kullandığından (işaret için + ~ 1 bit), yaklaşık 2 milyar almak için sadece 2 ^ 30 çift. 32 bit kullanan imzasız bir int için, 4 milyar için tekrar iki katına çıkın. Hata faktörü elbette gittikçe büyür, ancak ezberlenen tam değere ihtiyacınız yoktur (İhtiyacınız varsa, bunun için önceden tanımlanmış bir sabit kullanmanız gerekir). Yaklaşık değer, bir şeyin taşmaya tehlikeli bir şekilde yakın olabileceğini fark etmek için yeterince iyidir.
Ne demek istiyorsun? Bunun 2 ^ 32 olduğunu hatırlamak yeterince kolay olmalıdır. Bir kuralın bu sayının değerini ezberlemesini istiyorsanız, genel olarak ikili ve ondalık arasında dönüştürme yapmak için kullanışlı bir kural vardır:
2 ^ 10 ~ 1000
yani 2 ^ 20 ~ 1.000.000
ve 2 ^ 30 ~ 1.000.000.000
Bunun iki katı (2 ^ 31) 2 milyar ve tekrar iki katına çıkması (2 ^ 32) 4 milyar.
Herhangi bir ikili sayı hakkında kabaca tahmin almanın kolay bir yoludur. İkili 10 sıfır, ondalık 3 sıfır olur.
Objective-C'de (iOS ve OSX) şu makroları hatırlayın:
#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
Int32, numaranızı saklamak için 32 bitiniz olduğu anlamına gelir. En yüksek bit işaret bitidir, bu sayının pozitif mi yoksa negatif mi olduğunu gösterir. Yani pozitif ve negatif sayılar için 2 ^ 31 bitiniz var.
Sıfırın pozitif bir sayı olmasıyla (daha önce bahsedilen) mantıksal aralığını elde edersiniz
+2147483647 - -2147483648
Bunun küçük olduğunu düşünüyorsanız, Int64 kullanın:
+9223372036854775807 ila -9223372036854775808
Ve neden bu numarayı hatırlamak istiyorsun? Kodunuzda kullanmak için? Kodunuzda her zaman Int32.MaxValue veya Int32.MinValue kullanmalısınız, çünkü bunlar statik değerlerdir (.net çekirdeği içinde) ve dolayısıyla kullanımda kodla yeni bir int oluşturmaktan daha hızlıdır.
İfadem: eğer bu numarayı hafıza ile biliyorsanız .. sadece gösteriş yapıyorsunuz!
Bunu hatırlayın: 21 IQ MADDE 47
Herhangi bir telefon pediyle de kodları çözülebilir veya bir kağıda kendiniz yazabilirsiniz.
"21 IQ ITEM 47" yi hatırlamak için, "Hitman: Codename 47'nin her biri kendi IQ ITEM'leri olan 21 misyonu vardı."
Veya "Her gün 21: 47'de dişleri temizlerim, çünkü yüksek IQ'um var ve ağzımdaki maddeleri sevmiyorum".
de-encoded with any phone pad
?