Apa nilai maksimum untuk int32?

Aku tak pernah bisa mengingat nomor. Aku butuh memori aturan.

Mengomentari pertanyaan (19)
Larutan

It's 2,147,483,647. Cara termudah menghafal itu adalah melalui tato.

Komentar (24)

Jawaban yang paling benar yang bisa saya pikirkan adalah Int32.MaxValue.

Komentar (11)

Jika anda berpikir nilai terlalu sulit untuk diingat dalam basis 10, cobalah dasar 2: 1111111111111111111111111111111

Komentar (11)

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/

Komentar (15)

It's 10 digit, jadi berpura-pura itu's nomor telepon (dengan asumsi anda're di AS). 214-748-3647. Saya don't merekomendasikan menyebutnya.

Komentar (4)

Daripada menganggapnya sebagai satu jumlah yang besar, mencoba memecahnya dan mencari terkait ide-ide misalnya:

  • 2 maksimum snooker istirahat (maksimum istirahat 147)
  • 4 tahun (48 bulan)
  • 3 tahun (36 bulan)
  • 4 tahun (48 bulan)

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!

Komentar (11)

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
Komentar (8)

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.

Komentar (1)

Yang's bagaimana saya ingat 2147483647:

  • 214 - karena 2.14 kira-kira pi-1
  • 48 = 6*8
  • 64 = 8*8

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.

Komentar (4)
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:

  • 2^16 ~= 64 ribu // uint16
  • 2^32 ~= 4 milyar // uint32, IPv4, unixtime
  • 2^64 ~= 16 triliun (alias 16 miliar miliar atau 16 juta trilyun) // uint64, "bigint"
  • 2^128 ~= 256 triliun triliun (alias 256 triliun triliun triliun) // IPv6, GUID
Komentar (1)

Hanya mengambil yang layak kalkulator dan ketik "7FFFFFFF" dalam mode hex, kemudian beralih ke desimal.

2147483647.

Komentar (6)

It's tentang 2.1 * 10^9. Tidak perlu tahu persis2^{31} - 1 = 2,147,483,647.

C

Anda dapat menemukannya dalam C seperti berikut:

#include 
#include 

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

C++ 11


std::cout 
Komentar (2)

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.

Komentar (4)

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
Komentar (1)

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.)

Komentar (2)

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.).

Komentar (5)

Pertama menulis 47 dua kali, (anda seperti [Agent 47][1], 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 
Komentar (1)

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

Komentar (0)

2GB

(apakah ada minimum panjang untuk jawaban?)

Komentar (7)

Aturan terbaik untuk menghafal adalah: 21 (angka ajaib!) 47 (ingat itu) 48 (berurutan!) 36 (21 + 15, kedua magics!) 47 lagi

Juga lebih mudah untuk mengingat 5 pasang dari 10 digit.

Komentar (0)