Aku tak pernah bisa mengingat nomor. Aku butuh memori aturan.
It's 2,147,483,647. Cara termudah menghafal itu adalah melalui tato.
jika anda dapat mengingat seluruh Pi jumlah, maka jumlah yang anda cari di posisi 1,867,996,680 sampai 1,867,996,689 dari desimal digit dari Pi
string numerik 2147483647 muncul di 1,867,996,680 desimal digit dari Pi. 3.14......86181221809936452346214748364710527835665425671614...
sumber: http://www.subidiom.com/pi/
Daripada menganggapnya sebagai satu jumlah yang besar, mencoba memecahnya dan mencari terkait ide-ide misalnya:
Di atas berlaku untuk negatif terbesar nomor; positif yang minus satu.
Mungkin atas kerusakan akan ada lebih berkesan untuk anda (itu's hampir tidak menarik itu!), tapi mudah-mudahan anda bisa datang dengan beberapa ide-ide yang ada!
Negatif terbesar (32bit) value : -2147483648
(1 << 31)
Terbesar positif (32bit) value : 2147483647
~(1 << 31)
Mnemonic: "mabuk ALIAS horny"
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
Pokoknya, ambil ini regex (menentukan jika string mengandung non-negatif bilangan Bulat dalam bentuk desimal yang juga tidak lebih besar dari 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]
Mungkin itu akan membantu anda untuk mengingat.
Yang's bagaimana saya ingat 2147483647
:
Menulis ini secara horizontal:
214_48_64_
and insert:
^ ^ ^
7 3 7 - which is Boeing's airliner jet (thanks, sgorozco)
Sekarang anda've punya 2147483647.
Semoga ini bisa membantu setidaknya sedikit.
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
Jadi, 2^31 (signed int max) adalah 2^30 (sekitar 1 miliar) kali 2^1 (2), atau sekitar 2 miliar. Dan 2^32 adalah 2^30 * 2^2 atau sekitar 4 miliar. Ini metode pendekatan yang cukup akurat bahkan keluar untuk sekitar 2^64 (di mana kesalahan tumbuh sekitar 15%).
Jika anda membutuhkan jawaban yang tepat maka anda harus menarik sebuah kalkulator.
Berguna kata-blok perkiraan kapasitas:
It's tentang 2.1 * 10^9
. Tidak perlu tahu persis2^{31} - 1 = 2,147,483,647
.
Anda dapat menemukannya dalam C seperti berikut:
#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);
}
memberikan (baik, tanpa ,
)
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";
Anda bisa mendapatkan ini dengan Java, terlalu:
System.out.println(Integer.MAX_VALUE);
Namun perlu diingat bahwa Java bilangan bulat yang selalu ditandatangani.
Python telah sewenang-wenang presisi bilangan bulat. Tapi di Python 2, mereka dipetakan ke C bilangan bulat. Sehingga anda dapat melakukan ini:
import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L
Jadi Python beralih ke lama
ketika integer akan lebih besar dari 2^31 -1
Berikut ini's mnemonic untuk mengingat 2**31, kurangi satu untuk mendapatkan maksimum nilai integer.
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
I've menggunakan kekuatan dari dua hingga 18 cukup sering untuk mengingat mereka, tapi bahkan aku belum't repot-repot menghafal 2**31. It's terlalu mudah untuk menghitung sebagai dibutuhkan atau gunakan konstan, atau perkiraan seperti 2G.
32 bit, satu untuk tanda, 31 bit informasi:
2^31 - 1 = 2147483647
Mengapa -1?
Karena yang pertama adalah nol, jadi yang terbesar adalah menghitung minus one.
Untuk MENGEDIT cantfindaname88
Count adalah 2^31 tetapi dapat't menjadi 2147483648 (2^31) karena kita menghitung dari 0, bukan 1.
Rank 1 2 3 4 5 6 ... 2147483648
Number 0 1 2 3 4 5 ... 2147483647
Penjelasan lain dengan hanya 3 bit : 1. untuk tanda, 2 untuk informasi
2^2 - 1 = 3
Di bawah ini semua nilai yang mungkin dengan 3 bit: (2^3 = 8 nilai-nilai)
1: 100 ==> -4
2: 101 ==> -3
3: 110 ==> -2
4: 111 ==> -1
5: 000 ==> 0
6: 001 ==> 1
7: 010 ==> 2
8: 011 ==> 3
Nah, itu memiliki 32 bit dan karenanya dapat menyimpan 2^32 nilai-nilai yang berbeda. Setengah dari orang-orang yang negatif.
Solusinya adalah 2,147,483,647
Dan yang terendah adalah -2,147,483,648.
(Perhatikan bahwa ada satu lagi nilai negatif.)
Nah, selain dari lelucon, jika anda're benar-benar mencari berguna memori aturan, ada satu yang selalu saya gunakan untuk mengingat angka-angka besar.
Anda perlu untuk memecah nomor anda menjadi bagian dari 3-4 digit dan ingat mereka secara visual menggunakan proyeksi pada keyboard ponsel anda. It's mudah untuk menunjukkan pada gambar:
Seperti yang anda lihat, dari sekarang anda hanya perlu mengingat 3 bentuk, 2 dari mereka terlihat seperti Tetris L dan satu terlihat seperti kutu. Yang pasti jauh lebih mudah daripada menghafal 10 digit nomor.
Ketika anda perlu mengingat nomor hanya mengingat bentuk, bayangkan/terlihat pada keyboard ponsel dan proyek bentuk di atasnya. Mungkin awalnya anda'll harus melihat keyboard tapi setelah hanya sedikit latihan, anda'll ingat bahwa angka-angka yang bergerak dari kiri atas ke kanan bawah sehingga anda akan dapat dengan mudah membayangkan itu di kepala anda.
Hanya pastikan anda ingat arah bentuk dan jumlah digit pada masing-masing bentuk (misalnya, di 2147483647 contoh kita memiliki 4 digit Tetris L dan 3 digit L).
Anda dapat menggunakan teknik ini untuk dengan mudah mengingat semua nomor penting (misalnya, saya ingat saya 16 digit nomor kartu kredit dll.).
Pertama menulis 47 dua kali, (anda seperti Agent 47, kan?), menjaga ruang-ruang seperti yang ditunjukkan (masing-masing dash adalah slot untuk satu digit. Pertama 2 slot, kemudian 4)
--47----47
Pikir anda memiliki 12
di tangan (karena 12 = selusin). Kalikan dengan 4
, digit pertama dari Agent 47's nomor, yaitu 47
, dan menempatkan hasilnya ke kanan dari pasangan pertama anda sudah memiliki
12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47
Kemudian kalikan 12
oleh 3
(dalam rangka untuk membuat digit kedua dari Agen 47's nomor, yang merupakan 7
, anda perlu 7 - 4 = 3
) dan masukkan hasilnya ke kanan pertama 2 pasang, pasangan terakhir-slot
12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs
Akhirnya drag angka satu per satu dari tangan anda mulai dari kanan paling digit (2 dalam hal ini) dan menempatkan mereka dalam pertama slot kosong yang anda dapatkan
2-47483647 <-- after placing 2
2147483647 <-- after placing 1
Di sana anda memilikinya! Untuk negatif batas, anda dapat menganggap itu sebagai 1 di nilai mutlak dari positif batas.
Berlatih beberapa kali, dan anda akan mendapatkan menguasainya!
Cara termudah untuk melakukan hal ini untuk bilangan bulat adalah dengan menggunakan heksadesimal, asalkan ada isn't sesuatu seperti Int.maxInt(). Alasannya adalah ini:
Max nilai-nilai unsigned
8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Menandatangani nilai-nilai, menggunakan 7F sebagai max menandatangani nilai
8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF
Menandatangani nilai-nilai, menggunakan 80 sebagai max menandatangani nilai
8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000
Bagaimana apakah ini bekerja? Ini sangat mirip dengan biner taktik, dan masing-masing hex digit adalah 4 bit. Juga, banyak kompiler dukungan hex jauh lebih baik dari mereka mendukung biner.
F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000
Jadi 7F adalah sama dengan 01111111 / 7FFF sama dengan 0111111111111111. Juga, jika anda menggunakan ini untuk "gila-gilaan tinggi konstan", 7F... aman hex, tapi itu's cukup mudah untuk mencoba 7F dan 80 dan mencetaknya ke layar anda untuk melihat yang satu ini.
0x7FFF + 0x0001 = 0x8000, sehingga anda kehilangan hanya satu angka, sehingga menggunakan 0x7F... biasanya isn't buruk tradeoff untuk lebih banyak kode yang dapat diandalkan, terutama setelah anda mulai menggunakan 32-bit atau lebih