Berapa nilai maksimum untuk int32?


1380

Saya tidak pernah bisa mengingat nomornya. Saya membutuhkan aturan memori.


48
unsigned: 2³²-1 = 4 · 1024³-1; ditandatangani: -2³¹ .. + 2³¹-1, karena bit tanda adalah bit tertinggi. Cukup pelajari 2⁰ = 1 hingga 2¹⁰ = 1024 dan gabungkan. 1024 = 1k, 1024² = 1M, 1024³ = 1G
comonad

31
Saya biasanya ingat bahwa setiap 3 bit adalah angka desimal. Ini membuat saya ke urutan yang tepat besarnya: 32 bit adalah 10 digit.
Barmar

8
@ JoachimSauer tentu bisa membantu debugging jika Anda belajar untuk setidaknya mengenali angka-angka semacam ini.
Dunaril

72
"jika disk menjadi penuh, menghapus semua mbytes akan diarsipkan" (2 huruf, 1 huruf, 4 huruf, 7 huruf, 4 huruf, 8 huruf, 6 huruf, 6 huruf, 7 huruf)
UltraCommit

8
Sebuah kasus, ketika int32 tidak cukup: bbc.com/news/world-asia-30288542
ingaham

Jawaban:


5073

Ini 2.147.483.647. Cara termudah untuk menghafalnya adalah melalui tato.


83
Mnemonik saya: 2 ^ 10 sangat dekat dengan 1000, jadi 2 ^ (3 * 10) adalah 1000 ^ 3 atau sekitar 1 miliar. Salah satu dari 32 bit digunakan untuk tanda, sehingga nilai maksimalnya hanya 2 ^ 31, yaitu sekitar dua kali jumlah yang Anda dapatkan untuk 2 ^ (3 * 10): 2 miliar.
16807

164
2147483647 tanpa koma.
Vern D.

20
Cukup gunakan: Integer.MAX_VALUEdi Jawa.
Tim

184
Jika Anda memiliki tato di wajah Anda, jangan lupa untuk membalikkannya sehingga terbaca dengan benar di cermin. Kalau tidak, Anda akan melihat 746.384.741,2 yang salah dan akan memalukan.
Larry S

127
2,147.483.647 = 0x7FFFFFFF, jika Anda ingin mengingatnya, gunakan saja hex.
roottraveller

493

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


18
Sebelum ini ada, saya biasa mendefinisikan # INT32_MIN dan INT32_MAX di semua proyek saya.
WildJoe

45
@CamiloMartin Hai. Saya benci itu. Tidak ada lagi tempat untuk tato. Jelas, rangkaian iso-8859-1, dan Pi hingga 31415 desimal harus mendapatkan prioritas
sehe

3
Ketika Anda pemrograman: ya dalam 99% kasus. Tetapi Anda mungkin ingin tahu bahwa itu sekitar ~ 2 miliar untuk merencanakan pendekatan pemrograman atau ketika bekerja dengan data, meskipun jumlahnya sangat besar. :)
Andre Figueiredo

@sehe Bukankah latin1 / Windows 1252 sudah usang sekarang? Jika tidak bisa masuk dalam 7 byte ASCII, saya tidak berpikir itu layak mendapat tempat di memori utama. Maksudku ... semua halaman kode UNICODE agak berguna, tetapi lebih dari satu meg-skin-space sepertinya sia-sia. (Belum lagi masih belum termasuk mesin terbang deskriptif untuk "pageup / pagedown" atau "pagehome / pageend")

1
Properti ini mungkin merupakan saran yang bagus untuk menyebutkan nomor yang benar. Namun, saya tidak suka jawaban ini karena hanya menyebutkan cara yang tidak dapat dipercaya untuk menghentikan nilai dan tidak menyebutkan untuk bahasa pemrograman mana ini bekerja, baik ...
mozzbozz

439

Jika Anda berpikir nilainya terlalu sulit untuk diingat dalam basis 10, coba basis 2: 111111111111111111111111111111111


145
@Nick Whaley: Tidak, 1111111111111111111111111111111 adalah positif. 11111111111111111111111111111111 akan menjadi negatif :-)
Curd

58
Basis 16 lebih mudah lagi 7FFFFFFF
Nelson Galdeman Graziano

34
@Curd 11111111111111111111111111111111sebagai nomor basis-2 akan tetap positif (contoh negatif pada basis-2 adalah -1) . Urutan bit hanya negatif jika mewakili nomor komplemen 32-bit 2 :)
BlueRaja - Danny Pflughoeft

143
Yang paling mudah diingat adalah basis 2.147.483.647. Maka yang harus Anda ingat adalah 1.
big_tommy_7bb

82
@ tim_barber_7BB sebenarnya, ini 10.
fscheidl

317

jika Anda dapat mengingat seluruh nomor Pi, maka angka yang Anda cari ada di posisi 1.867.996.680 hingga 1.867.996.689 dari angka desimal Pi

String numerik 2147483647 muncul pada angka desimal Pi 1,867.996.680. 3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...

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


30
Anda tahu, ketika saya mulai membaca jawaban Anda, saya mengharapkan sesuatu yang praktis, seperti angka 20.
JqueryToAddNumbers

95
Ini sepertinya keren. Apakah Anda memiliki aturan memori lain yang perlu diingat 1,867.996.680? Saya merasa sulit untuk mengingat pada indeks mana untuk mulai mencari ....
Alderath

10
" jika Anda dapat mengingat seluruh nomor Pi ... " - tidak, Anda tidak bisa, itu tidak rasional {seperti yang mungkin satu atau dua posting dalam Tanya Jawab ini} 8-D
SlySven

10
@Alderath Saya biasanya mengingatnya sebagai 10 desimal dalam sqrt (2) mulai dari angka digit 380.630.713 ....
Henrik

2
@Alderath: String numerik 1867996680 muncul di angka desimal 380.630.713 ke Square dari 2.
Yair Halberstadt

290

Ini 10 digit, jadi anggap itu nomor telepon (dengan asumsi Anda berada di AS). 214-748-3647. Saya tidak merekomendasikan untuk menyebutnya.


13
Berbicara tentang mengingatnya sebagai nomor telepon, tampaknya mungkin ada beberapa spammer telepon yang menggunakannya: mrnumber.com/1-214-748-3647
Steven

8
"Tidak ada pertukaran" 748 "di Dallas. Nomor ini palsu." - dari halaman yang ditautkan oleh shambleh
Tarnay Kálmán

104
@ Seven Saya tidak berpikir mereka spammer, hanya orang yang secara tidak sengaja menyimpan nomor telepon sebagai INTganti VARCHARdi MySQL.
Zarel

8
Sudah mencoba menyebutnya. Itu berdering beberapa kali lalu pergi ke nada panggil kesalahan. = (
Krythic

172

Daripada menganggapnya sebagai satu angka besar, cobalah memecahnya dan mencari ide-ide terkait misalnya:

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

Hal di atas berlaku untuk angka negatif terbesar; positif adalah minus satu itu.

Mungkin uraian di atas tidak akan lebih berkesan bagi Anda (rasanya tidak mengasyikkan!), Tapi mudah-mudahan Anda dapat menemukan beberapa ide yang ada!


99
Itu adalah salah satu perangkat mneumonik paling rumit yang pernah saya lihat. Impresif.
Ben Hoffstein

9
Heh, orang-orang seperti Derren Brown sebenarnya menganjurkan pendekatan semacam ini - memecah angka menjadi sesuatu yang acak tapi siapa yang lebih berkesan daripada hanya memuat angka: channel4.com/entertainment/tv/microsites/M/mindcontrol/remember/…
Luke Bennett

19
Saya memiliki mnemonik yang lebih baik: yang perlu Anda ingat adalah 2 dan 31, karena nampaknya tepat 2 ^ 31! Oh, tunggu ...
Tamas Czinege

28
@DrJokepu Saya tidak yakin tentang prioritas operator ... Apakah itu berarti 2^(31!)atau (2^31)!?
Alderath

1
@Lucio Perhatikan bahwa jawaban saya terkait pada contoh pertama dengan angka negatif terbesar yang berakhir pada 48, bukan 47
Luke Bennett

144

Nilai negatif (32bit) terbesar: -2147483648
(1 << 31)

Nilai positif (32bit) terbesar: 2147483647
~ (1 << 31)

Mnemonic: "mabuk AKA 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

27
Dunia yang paling sulit untuk diingat Mnemonic. Jika Anda dapat menghafal 0118 999 88199 9119 752 ... 3 Anda dapat menghafal ini.
BenM

11
@Rondles Saya pikir ini sebenarnya 7253 pada akhirnya.
Tim Tisdall

21
Nggak. Umur minum adalah 18 di sini ... Sepertinya saya tidak bisa menggunakan mnemonik ini, hidup saya hancur.
Joffrey

4
@Aaren Cordova Mereka dulu mengatakan stackoverflow tidak akan pernah lucu, tidak lebih dari sebuah situs tanya jawab, saya biasanya mengarahkan mereka ke jawaban ini. Hal ini hanya bisa dibuat di dalam pikiran jenius, maksud saya ini adalah Art.
Mohd Abdul Mujib

5
Bilangan bulat 32 bit negatif terbesar, atau 64 bit dalam hal ini, adalah -1.
Fred Mitchell

75

Pokoknya, ambil regex ini (menentukan apakah string berisi Integer non-negatif 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 mengingat.


12
Itu terdengar jauh lebih mudah dan menyenangkan bagi saya. Sebenarnya itu jauh lebih mudah daripada 2147483647. Ini akan sangat membantu bagi OP
Sнаđошƒаӽ

61

Itulah yang saya ingat 2147483647:

  • 214 - karena 2,14 kira-kira pi-1
  • 48 = 6 * 8
  • 64 = 8 * 8

Tulis ini secara horizontal:

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

Sekarang Anda punya 2147483647.

Semoga ini bisa membantu setidaknya sedikit.


3
Yang bagus! Saya pikir aturan 214 harus pi - 1. Juga topeng menunjukkan 68 daripada 64. =) Untuk penggemar penerbangan seperti saya, nilai 737 harus mudah diingat mengaitkannya dengan jet pesawat ukuran sedang Boeing.

Anda bisa melangkah lebih jauh dari itu. Jatuhkan desimal dan bandingkan pi dan 2 ^ 31-1. Dalam posisi yang sama Anda mendapatkan 141 vs 147, jadi digit terakhir hanya menjadi 7. Kemudian 592 vs 483, semua adalah satu digit dari satu sama lain. Dan 643 vs 647, itu yang menjadi 7 hal lagi.
Peter Cooper

@PeterCooper Altho desimal untuk pi dimulai dengan 1415926_5_35 (Perhatikan 5, bukan 4)
Moberg

15
Mnemonic saya adalah mengambil 4294967296 (yang mudah diingat) dan membaginya dengan 2
MM

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

Jadi, 2 ^ 31 (masuk 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. Metode pendekatan ini cukup akurat bahkan sekitar 2 ^ 64 (di mana kesalahan tumbuh sekitar 15%).

Jika Anda membutuhkan jawaban yang tepat maka Anda harus menarik kalkulator.

Perkiraan kapasitas rata-rata yang praktis:

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

76
Itulah yang dikatakan pembuat hard drive.
Scott Stafford

46

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

2147483647


150
Kalkulator yang layak dapat melakukan 2 ^ 31 juga.
Christoffer

17
Saya tidak tahu 2 ^ 31 tampaknya seperti jalan panjang untuk melakukannya: /
Amerika

2
Atau ingat saja dalam hex
Vernon

4
Cukup ... tuliskan dalam hex. Atau Int32.MaxValue/numeric_limits<int32_t>::max()
lihat


36

Ini tentang 2.1 * 10^9. Tidak perlu tahu persisnya 2^{31} - 1 = 2,147,483,647.

C

Anda dapat menemukannya di C seperti itu:

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

memberi (baik, tanpa ,)

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

Jawa

Anda juga bisa mendapatkan ini dengan Java:

System.out.println(Integer.MAX_VALUE);

Tetapi perlu diingat bahwa Java integer selalu masuk.

Python 2

Python memiliki bilangan bulat presisi acak. Tetapi dalam Python 2, mereka dipetakan ke C integer. Jadi Anda bisa melakukan ini:

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

Jadi Python beralih ke longsaat bilangan bulat menjadi lebih besar dari2^31 -1


Jawaban Python sudah kedaluwarsa, lihat: stackoverflow.com/questions/13795758/…
NOhs

@Tidak, saya menghargai tautannya, tetapi jawaban Python saya adalah tentang "Python 2" (Saya menambahkan 2 pada judul bagian untuk membuatnya lebih jelas). Jadi jawaban saya tidak ketinggalan jaman. (Tapi Python 2, diakui, adalah)
Martin Thoma

35

Ini adalah mnemonic untuk mengingat 2 ** 31, kurangi satu untuk mendapatkan nilai integer maksimum.

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

Saya telah menggunakan kekuatan dua hingga 18 cukup sering untuk mengingatnya, tetapi bahkan saya belum repot-repot mengingat 2 ** 31. Terlalu mudah untuk menghitung sesuai kebutuhan atau menggunakan konstanta, atau memperkirakan sebagai 2G.


3
Apa yang Anda lakukan untuk 2 ^ 10, 2 ^ 11, 2 ^ 12, atau 2 ^ 17 (semuanya memiliki nol)?
supercat

2
@supercat saya akan rebase a = 0, atau menggunakan o = 0.
Mark Ransom

Ini luar biasa. Terima kasih, kamu menyelamatkan hidupku.
chenz

31

32 bit, satu untuk tanda, 31 bit informasi:

2^31 - 1 = 2147483647

Kenapa -1?
Karena yang pertama adalah nol, jadi yang terbesar adalah hitungan minus .

EDIT untuk cantfindaname88

Hitungannya adalah 2 ^ 31 tetapi yang terbesar tidak mungkin 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 semua nilai yang mungkin dengan 3 bit: (2 ^ 3 = 8 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

@ cantfindaname88: 2 ^ 31 = total kombinasi, jadi berkisar dari 0 hingga (2 ^ 31 -1). Ya yang pertama adalah 0.
Luciano

30

Yah, ia memiliki 32 bit dan karenanya dapat menyimpan 2 ^ 32 nilai yang berbeda. Setengah dari mereka adalah negatif.

Solusinya adalah 2.147.483.647

Dan yang terendah adalah ,2.147.483.648.

(Perhatikan bahwa ada satu lagi nilai negatif.)


Ini memiliki 32 bit dan karenanya dapat menyimpan 2 ^ 32 nilai. Tidak kurang.
JB.

28

Nah, selain dari lelucon, jika Anda benar-benar mencari aturan memori yang berguna, ada satu yang selalu saya gunakan untuk mengingat angka besar.

Anda perlu memecah nomor Anda menjadi bagian-bagian dari 3-4 digit dan mengingatnya secara visual menggunakan proyeksi pada keyboard ponsel Anda. Lebih mudah ditampilkan pada gambar:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, mulai sekarang Anda hanya perlu mengingat 3 bentuk, 2 di antaranya tampak seperti Tetris L dan satu lagi terlihat seperti tanda centang . Yang pasti jauh lebih mudah daripada menghafal nomor 10 digit.

Ketika Anda perlu mengingat nomor hanya ingat bentuk, bayangkan / lihat pada keyboard ponsel dan proyeksikan bentuk di atasnya. Mungkin awalnya Anda harus melihat keyboard tetapi setelah sedikit latihan, Anda akan ingat bahwa angka-angka bergerak dari kiri atas ke kanan bawah sehingga Anda dapat membayangkannya di kepala Anda.

Pastikan Anda mengingat arah bentuk dan jumlah digit di setiap bentuk (misalnya, pada 2147483647 contoh, kami memiliki Tetris L 4 digit dan L 3 digit).

Anda dapat menggunakan teknik ini untuk dengan mudah mengingat angka penting (misalnya, saya ingat nomor kartu kredit 16 digit saya, dll.).


Ide yang rapi! Shape 1 memberi Anda 2147, Shape 2 memberi Anda 483, dan Shape 3 seharusnya memberi 647, tetapi seperti yang digambarkan, itu bisa ditafsirkan sebagai 6 5 47. Bagaimana saya tahu kapan harus memasukkan semua angka yang disilangkan (seperti dalam Bentuk 1 ) vs. kapan harus melewati beberapa (seperti pada Bentuk 3)? Anda juga harus mengingat bahwa bentuk masing-masing mengkodekan 4, 3, dan 3 digit. Atau Anda bisa menggambar Bentuk 3 dengan busur dari 6 ke 4 bukannya garis lurus.
jskroch

@ Quinch Ya, terutama untuk mengingat int. Max seharusnya tidak menjadi masalah karena Anda mungkin tahu itu sekitar 2 miliar sehingga memiliki 10 angka di dalamnya (dan itu berarti jika bentuk pertama memiliki 4 angka maka yang kedua dan ketiga bentuk memiliki 3 sesuai). Namun, itu poin yang bagus jika Anda ingin menggunakan pendekatan ini untuk nomor apa pun. Juga, ada angka yang sulit diingat menggunakan cara ini (yaitu 1112 atau sesuatu). Di sisi lain, seharusnya tidak sulit untuk mengingat nomor tersebut. Jadi saya katakan itu terserah Anda, beri tahu saya jika Anda menemukan sesuatu yang menarik untuk ini. :)
Ivan Yurchenko

Ya, saya berpikir tentang menggunakan metode ini untuk mengingat urutan angka yang berubah-ubah, tetapi untuk nilai int.Max khusus ini, metode Anda bekerja dengan cukup baik. Seperti yang Anda katakan, angka berulang adalah masalah. Bahkan, setiap urutan yang berulang (seperti 2323) adalah masalah. Urutan apa pun yang memotong sendiri (seperti 2058) sulit untuk menggambar. Setiap teknik menghafal mengharuskan Anda untuk mengingat beberapa informasi. Ini adalah preferensi pribadi jenis info apa yang paling melekat di kepala Anda.
jskroch

1
Ini adalah bagaimana saya mengingat kode pin dan sejenisnya, tetapi tiba-tiba Anda perlu mengetikkannya di komputer Anda dan menyadari bahwa numpad dibalik secara vertikal. Jadi itu sedikit tantangan.
nibarius

Seseorang di Dallas, Texas , telah menerima banyak panggilan telepon aneh dan tidak tahu bahwa Anda yang harus disalahkan @IvanYurchenko.
Bob Stein

21

Cara termudah untuk melakukan ini untuk bilangan bulat adalah dengan menggunakan heksadesimal, asalkan tidak ada sesuatu seperti Int.maxInt (). Alasannya adalah ini:

Nilai maksimum unsigned

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

Nilai yang ditandatangani, menggunakan 7F sebagai nilai yang ditandatangani maks

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

Nilai yang ditandatangani, menggunakan 80 sebagai nilai yang ditandatangani maks

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

Bagaimana cara kerjanya? Ini sangat mirip dengan taktik biner, dan setiap digit hex tepat 4 bit. Juga, banyak kompiler mendukung hex jauh lebih baik daripada 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 sama dengan 01111111 / 7FFF sama dengan 0111111111111111. Juga, jika Anda menggunakan ini untuk "konstanta gila-gilaan tinggi", 7F ... adalah hex aman, tetapi cukup mudah untuk mencoba 7F dan 80 dan hanya mencetaknya ke layar Anda untuk melihat yang mana itu.

0x7FFF + 0x0001 = 0x8000, jadi kerugian Anda hanya satu angka, jadi menggunakan 0x7F ... biasanya bukan tradeoff yang buruk untuk kode yang lebih andal, terutama sekali Anda mulai menggunakan 32-bit atau lebih


21

Pertama, tulis 47 dua kali, (Anda suka Agen 47 , kan?), Menjaga spasi seperti yang ditunjukkan (setiap tanda hubung adalah slot untuk satu digit. Pertama 2 slot, lalu 4)

--47----47

Pikirkan Anda ada 12di tangan (karena 12 = selusin). Lipat gandakan dengan 4, digit pertama nomor Agen 47, yaitu 47, dan tempatkan hasilnya di sebelah kanan pasangan pertama yang sudah Anda miliki

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

Kemudian kalikan 12dengan 3(untuk membuat digit kedua dari nomor Agen 47, yaitu 7, yang Anda butuhkan 7 - 4 = 3) dan letakkan hasilnya di sebelah kanan 2 pasangan pertama, slot pasangan terakhir

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

Terakhir, seret digit satu per satu dari tangan Anda mulai dari digit paling kanan (2 dalam hal ini) dan letakkan di slot kosong pertama yang Anda dapatkan

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

Itu dia! Untuk batas negatif, Anda dapat menganggapnya sebagai 1 lebih dalam nilai absolut daripada batas positif.

Berlatihlah beberapa kali, dan Anda akan terbiasa!


"1 lebih banyak dalam nilai absolut daripada batas positif" mengerti saya.
Navin

20

2GB

(apakah ada panjang minimum untuk jawaban?)


18
Bukankah seharusnya itu GiB?
Jouke van der Maas

9
@ JoukevanderMaas - Sebenarnya, seharusnya 4B.
Ted Hopp

1
Itulah sebabnya batas RAM yang dapat Anda miliki di komputer 32bit adalah 4GB
Serj Sagan

3
nilai 4GB benar dengan bilangan bulat yang tidak ditandatangani. jika Anda memiliki int yang sudah ditandatangani, Anda jelas perlu membaginya dengan 2 untuk mendapatkan nilai maksimal yang mungkin
SwissCoder

3
Dalam 32-bit ada 2GB cadangan ruang memori untuk proses pengguna, dan 2GB untuk kernel. Ini dapat dikonfigurasi sehingga kernel hanya memiliki 1 GB yang dipesan
Rune

15

Dengan asumsi .NET -

Console.WriteLine(Int32.MaxValue);

15

Jika Anda mengetahui tabel ASCII dengan hati dan tidak MaxInt:
!GH6G = 21 47 48 36 47


Ketika saya menulis jawaban ini, saya tidak tahu GH6G memiliki begitu banyak hit Google, dan sekarang saya telah menggunakan ini sendiri :-)
Mark Hurd

15

Aturan terbaik untuk mengingatnya adalah:
21 (angka ajaib!)
47 (ingat saja)
48 (berurutan!)
36 (21 + 15, keduanya sihir!)
47 lagi

Juga lebih mudah untuk mengingat 5 pasang daripada 10 digit.


14

Cara termudah untuk diingat adalah dengan melihatnya std::numeric_limits< int >::max()

Misalnya ( dari 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

Menariknya, Int32.MaxValue memiliki lebih banyak karakter daripada 2.147.486.647.

Tapi sekali lagi, kita memang memiliki penyelesaian kode,

Jadi saya kira yang harus kita hafal adalah Int3<period>M<enter>, yang hanya 6 karakter untuk mengetik di studio visual.

UPDATE Entah mengapa saya downvoted. Satu-satunya alasan yang dapat saya pikirkan adalah bahwa mereka tidak memahami pernyataan pertama saya.

"Int32.MaxValue" membutuhkan maksimal 14 karakter untuk mengetik. 2.147.486.647 membutuhkan 10 atau 13 karakter untuk diketik tergantung pada apakah Anda memasukkan koma atau tidak.


2
Tetapi yang penting bukanlah berapa banyak karakter yang harus Anda ketik, tetapi bagaimana cara mem-memo itu. Saya yakin Iwannagohomelebih mudah untuk memo daripada 298347829. Namun, tidak ada alasan untuk -1.
glglgl

3
Bisa jadi kurang dari itu, cukup buat cuplikan nilai maks Anda sendiri, "imv" <tab> <tab> mungkin?
BradleyDotNET

4
!=Keystrokes Karakter . Untuk pengguna .Net yang miskin ini, ini in+ .+ ma+ Return.
Michael - Di mana Clay Shirky

11

Ingatlah bahwa 2 ^ (10 * x) kira-kira 10 ^ (3 * x) - Anda mungkin sudah terbiasa dengan ini dengan kilobytes / kibibytes dll. Yaitu:

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

Karena int menggunakan 31 bit (+ ~ 1 bit untuk tanda), cukup gandakan 2 ^ 30 untuk mendapatkan sekitar 2 miliar. Untuk int unsigned menggunakan 32 bit, gandakan lagi untuk 4 miliar. Faktor kesalahan semakin tinggi semakin besar Anda pergi tentu saja, tetapi Anda tidak perlu nilai tepat dihafal (Jika Anda membutuhkannya, Anda harus menggunakan konstanta yang telah ditentukan sebelumnya untuk itu). Nilai perkiraannya cukup baik untuk diperhatikan ketika sesuatu mungkin hampir meluap.


10
Offtopic: 2 ^ 4 = 4 ^ 2, oleh karena itu eksponensial adalah komutatif!
Adam Liss

10
@ Pier-OlivierThibault tidak, saya menggunakannya sepanjang waktu! sekarang saya perlu mencari tahu mengapa semua matematika saya salah. mungkin ada hubungannya dengan kesalahan multiplikasi. ngomong-ngomong, selamat tinggal!
tckmn

9

ini adalah bagaimana saya melakukannya untuk mengingat 2.147.483.647

Untuk seperempat sabana jauh, optimus trio dipoles empat puluh september

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

7

Apa maksudmu? Seharusnya cukup mudah untuk mengingat bahwa itu adalah 2 ^ 32. Jika Anda ingin aturan untuk menghafal nilai angka itu, aturan praktis praktis adalah untuk mengkonversi antara biner dan desimal secara umum:

2 ^ 10 ~ 1000

yang berarti 2 ^ 20 ~ 1.000.000

dan 2 ^ 30 ~ 1.000.000.000

Dua kali lipat (2 ^ 31) adalah 2 miliar, dan dua kali lipat lagi (2 ^ 32) adalah 4 miliar.

Ini cara mudah untuk mendapatkan perkiraan kasar dari angka biner apa pun. 10 nol dalam biner menjadi 3 nol dalam desimal.


7
tapi itu bukan 2 ^ 32 - itu (2 ^ 31) -1
Steve Folly

6

Di Objective-C (iOS & OSX), ingatlah makro ini:

#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 berarti Anda memiliki 32 bit yang tersedia untuk menyimpan nomor Anda. Bit tertinggi adalah bit tanda, ini menunjukkan jika angka tersebut positif atau negatif. Jadi, Anda memiliki 2 ^ 31 bit untuk angka positif dan negatif.

Dengan nol menjadi angka positif Anda mendapatkan rentang logis dari (disebutkan sebelumnya)

+2147483647 hingga -2147483648

Jika menurut Anda itu kecil, gunakan Int64:

+9223372036854775807 hingga -9223372036854775808

Dan mengapa Anda ingin mengingat nomor ini? Untuk digunakan dalam kode Anda? Anda harus selalu menggunakan Int32.MaxValue atau Int32.MinValue dalam kode Anda karena ini adalah nilai statis (dalam inti .net) dan karenanya lebih cepat digunakan daripada membuat int baru dengan kode.

Pernyataan saya: jika tahu nomor ini berdasarkan memori .. Anda hanya pamer!


2
Sebagian besar komputer modern menyimpan angka dalam format "dua pujian". Bit tertinggi (bukan terendah) adalah tandanya. Yang rapi dengan kompos dua-duanya adalah bahwa -ve number ditangani oleh aturan overflow alami CPU. yaitu 0xFF adalah 8 bit -1, tambahkan ke 0x01 (+1) dan Anda mendapatkan 0x100. Potong bit di atas 8 hingga 0x00 dan Anda memiliki jawaban.
Tom Leys

5

Ingat ini: 21 IQ ITEM 47

Itu dapat di-encoded dengan pad ponsel apa pun, atau Anda bisa menuliskannya sendiri di atas kertas.

Untuk mengingat "21 IQ ITEM 47", saya akan pergi dengan "Hitman: Codename 47 memiliki 21 misi, yang masing-masing adalah ITEM IQ sendiri".

Atau "Saya membersihkan gigi pada 21:47 setiap hari, karena saya memiliki IQ tinggi dan tidak suka barang di mulut saya".


Apa maksudmu dengan de-encoded with any phone pad?
mcExchange
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.