سؤال
لا أستطيع أن أتذكر الرقم أبدا.أحتاج إلى قاعدة الذاكرة.
المحلول
إنه 2,147,483,647.أسهل طريقة لحفظها هي عن طريق الوشم.
نصائح أخرى
الإجابة الصحيحة التي يمكنني التفكير فيها هي Int32.MaxValue
.
إذا كنت تعتقد أنه من الصعب جدًا تذكر القيمة في الأساس 10، فجرّب الأساس 2:11111111111111111111111111111
إذا كان بإمكانك تذكر رقم Pi بالكامل، فإن الرقم الذي تبحث عنه يقع في الموضع 1,867,996,680 حتى 1,867,996,689 من الأرقام العشرية لـ Pi
تظهر السلسلة الرقمية 2147483647 عند الرقم العشري 1,867,996,680 لـ Pi.3.14......86181221809936452346214748364710527835665425671614...
إنه مكون من 10 أرقام، لذا تظاهر بأنه رقم هاتف (على افتراض أنك في الولايات المتحدة).214-748-3647.لا أنصح بالاتصال به
بدلاً من التفكير فيه كرقم واحد كبير، حاول تقسيمه والبحث عن الأفكار المرتبطة به، على سبيل المثال:
- الحد الأقصى لفترتي استراحة للسنوكر (الحد الأقصى للاستراحة هو 147)
- 4 سنوات (48 شهرًا)
- 3 سنوات (36 شهرًا)
- 4 سنوات (48 شهرًا)
ما ورد أعلاه ينطبق على أكبر رقم سالب؛الإيجابي هو أن ناقص واحد.
ربما لن يكون التقسيم المذكور أعلاه قابلاً للتذكر بالنسبة لك (إنه ليس مثيرًا على الإطلاق!) ، ولكن نأمل أن تتمكن من التوصل إلى بعض الأفكار!
أكبر قيمة سلبية (32 بت):-2147483648
(1 << 31)
أكبر قيمة موجبة (32 بت):2147483647
~(1 << 31)
ذاكري:"في حالة سكر AKA قرنية"
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
على أي حال، خذ هذا التعبير العادي (يحدد ما إذا كانت السلسلة تحتوي على عدد صحيح غير سالب في شكل عشري وهو أيضًا ليس أكبر من 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]
ربما سيساعدك على التذكر.
هكذا تذكرت 2147483647
:
- 214 - لأن 2.14 يساوي تقريبًا pi-1
- 48 = 6*8
- 64 = 8*8
اكتب هذه أفقيا:
214_48_64_
and insert:
^ ^ ^
7 3 7 - which is Boeing's airliner jet (thanks, sgorozco)
الآن لديك 2147483647.
نأمل أن يساعد هذا على الأقل قليلا.
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
لذا، 2^31 (موقّع int max) يساوي 2^30 (حوالي 1 مليار) × 2^1 (2)، أو حوالي 2 مليار.و 2 ^ 32 هو 2 ^ 30 * 2 ^ 2 أو حوالي 4 مليارات.تعتبر طريقة التقريب هذه دقيقة بدرجة كافية حتى تصل إلى حوالي 2^64 (حيث ينمو الخطأ إلى حوالي 15%).
إذا كنت تريد إجابة دقيقة، فيجب عليك استخدام الآلة الحاسبة.
تقديرات تقريبية سهلة الاستخدام لمحاذاة الكلمات:
- 2^16 ~= 64 ألف // uint16
- 2^32 ~= 4 مليار // uint32، IPv4، unixtime
- 2^64 ~= 16 كوينتيليون (المعروف أيضًا باسم 16 مليار مليار أو 16 مليون تريليون) // uint64، "كبير"
- 2^128 ~= 256 كوينتيليون كوينتيليون (ويعرف أيضًا باسم 256 تريليون تريليون تريليون) // IPv6، GUID
ما عليك سوى استخدام أي آلة حاسبة مناسبة واكتب "7FFFFFFFF" في الوضع السداسي، ثم قم بالتبديل إلى النظام العشري.
2147483647.
إنه على وشك 2.1 * 10^9
.لا حاجة لمعرفة بالضبط 2^{31} - 1 = 2,147,483,647
.
ج
يمكنك العثور عليه في C مثل هذا:
#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);
}
يعطي (حسنا، دون ,
)
max int: 2,147,483,647
max unsigned int: 4,294,967,295
سي++ 11
std::cout << std::numeric_limits<int>::max() << "\n";
std::cout << std::numeric_limits<unsigned int>::max() << "\n";
جافا
يمكنك الحصول على هذا باستخدام Java أيضًا:
System.out.println(Integer.MAX_VALUE);
لكن ضع في اعتبارك أن أعداد Java الصحيحة يتم توقيعها دائمًا.
بايثون 2
لدى بايثون أعداد صحيحة دقيقة.لكن في Python 2، تم تعيينها إلى أعداد صحيحة في لغة C.لذلك يمكنك القيام بذلك:
import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L
لذلك تتحول بايثون إلى long
عندما يصبح العدد الصحيح أكبر من 2^31 -1
إليك طريقة تذكيرية لتذكر 2**31، اطرح واحدًا للحصول على الحد الأقصى لقيمة العدد الصحيح.
أ=1,ب=2,ج=3,د=4,ه=5,و=6,ز=7,ح=8,ط=9
Boys And Dogs Go Duck Hunting, Come Friday Ducks Hide
2 1 4 7 4 8 3 6 4 8
لقد استخدمت قوى اثنين حتى 18 كثيرًا بما يكفي لتذكرها، لكن حتى أنا لم أزعج نفسي بحفظ 2**31.من السهل جدًا إجراء الحساب حسب الحاجة أو استخدام ثابت أو تقدير 2G.
32 بت، واحد للعلامة، 31 بت من المعلومات:
2^31 - 1 = 2147483647
لماذا -1؟
لأن الأول هو صفر، فالأكبر هو العد ناقص واحد.
تحرير ل cantfindaname88
العدد هو 2^31 لكن الأكبر لا يمكن أن يكون 2147483648 (2^31) لأننا نعد من 0، وليس 1.
Rank 1 2 3 4 5 6 ... 2147483648
Number 0 1 2 3 4 5 ... 2147483647
شرح آخر مع 3 بت فقط:1 للعلامة، 2 للمعلومات
2^2 - 1 = 3
أدناه جميع القيم الممكنة مع 3 بت:(2^3 = 8 قيم)
1: 100 ==> -4
2: 101 ==> -3
3: 110 ==> -2
4: 111 ==> -1
5: 000 ==> 0
6: 001 ==> 1
7: 010 ==> 2
8: 011 ==> 3
حسنًا، يحتوي على 32 بت وبالتالي يمكنه تخزين 2^32 قيمة مختلفة.ونصفها سلبي.
الحل هو 2,147,483,647
والأدنى هو −2,147,483,648.
(لاحظ أن هناك قيمة سلبية أخرى.)
في هذه المرحلة، أود أن أقول إن أسهل طريقة للتذكر هي كتابة "stackoverflow.com" فاتورة غير مدفوعة "الحد الأقصى int32" في Chrome.
هناك تكرار -> نكتة تجاوز سعة المكدس هناك في مكان ما.أنا لست هذا العبقري غريب الأطوار.
حسنًا، بعيدًا عن النكات، إذا كنت تبحث حقًا عن قاعدة مفيدة للذاكرة، فهناك قاعدة أستخدمها دائمًا لتذكر الأعداد الكبيرة.
تحتاج إلى تقسيم رقمك إلى أجزاء مكونة من 3 إلى 4 أرقام وتذكرها بصريًا باستخدام العرض على لوحة مفاتيح هاتفك الخلوي.من الأسهل أن تظهر على الصورة:
كما ترون، من الآن فصاعدا عليك فقط أن تتذكر 3 أشكال، 2 منها يشبه لعبة Tetris L وواحد يشبه علامة التجزئة.وهو بالتأكيد أسهل بكثير من حفظ رقم مكون من 10 أرقام.
عندما تحتاج إلى تذكر الرقم، ما عليك سوى تذكر الأشكال، وتخيل/انظر إلى لوحة مفاتيح الهاتف وقم بعرض الأشكال عليها.ربما سيتعين عليك في البداية إلقاء نظرة على لوحة المفاتيح، ولكن بعد القليل من التدريب، ستتذكر أن الأرقام تنتقل من أعلى اليسار إلى أسفل اليمين، لذا ستتمكن من تخيلها ببساطة في رأسك.
فقط تأكد من أنك تتذكر اتجاه الأشكال وعدد الأرقام في كل شكل (على سبيل المثال، في مثال 2147483647 لدينا Tetris L المكون من 4 أرقام وL المكون من 3 أرقام).
يمكنك استخدام هذه التقنية لتذكر أي أرقام مهمة بسهولة (على سبيل المثال، تذكرت رقم بطاقتي الائتمانية المكون من 16 رقمًا وما إلى ذلك).
أسهل طريقة للقيام بذلك للأعداد الصحيحة هي استخدام النظام الست عشري، بشرط عدم وجود شيء مثل Int.maxInt().السبب هو هذا:
الحد الأقصى للقيم غير الموقعة
8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
القيم الموقعة، باستخدام 7F باعتبارها القيمة القصوى الموقعة
8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF
القيم الموقعة، باستخدام 80 كحد أقصى للقيمة الموقعة
8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000
كيف يعمل هذا؟وهذا مشابه جدًا للتكتيك الثنائي، وكل رقم سداسي عشري يتكون من 4 بتات بالضبط.كما أن الكثير من المترجمين يدعمون النظام السداسي بشكل أفضل بكثير من دعمهم للثنائي.
F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000
إذن 7F يساوي 01111111 / 7FFF يساوي 0111111111111111.أيضًا، إذا كنت تستخدم هذا من أجل "الثبات العالي بجنون"، 7F...هو سداسي عشري آمن، ولكن من السهل تجربة 7F و80 وطباعتهما على شاشتك لمعرفة أي منهما.
0x7FFF + 0x0001 = 0x8000، لذا فإن خسارتك هي رقم واحد فقط، لذا باستخدام 0x7F...عادة لا تكون هذه مقايضة سيئة للحصول على تعليمات برمجية أكثر موثوقية، خاصة بمجرد البدء في استخدام 32 بت أو أكثر
أولاً، اكتب 47 مرتين، (كما تريد الوكيل 47, ، أليس كذلك؟)، مع الاحتفاظ بالمسافات كما هو موضح (كل شرطة عبارة عن فتحة لرقم واحد.أول فتحتين، ثم 4)
--47----47
أعتقد أن لديك 12
في متناول اليد (لأن 12 = دزينة).اضربها 4
, ، الرقم الأول من رقم الوكيل 47، أي. 47
, ، ثم ضع النتيجة على يمين الزوج الأول الموجود لديك بالفعل
12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47
ثم اضرب 12
بواسطة 3
(من أجل الحصول على الرقم الثاني من رقم العميل 47، وهو 7
, ، انت تحتاج 7 - 4 = 3
) ووضع النتيجة على يمين أول زوجين، فتحة الزوج الأخير
12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs
أخيرًا، اسحب الأرقام واحدًا تلو الآخر من يدك بدءًا من الرقم الموجود في أقصى اليمين (2 في هذه الحالة) وضعها في أول فتحة فارغة تحصل عليها
2-47483647 <-- after placing 2
2147483647 <-- after placing 1
ها أنت ذا!بالنسبة للحد السالب، يمكنك التفكير في ذلك على أنه 1 إضافي قيمه مطلقه من الحد الإيجابي.
تدرب عدة مرات، وسوف تتقن الأمر!
2 جيجابايت
(هل هناك حد أدنى لطول الإجابات؟)
إذا كنت تعرف الخاص بك جدول ASCII عن ظهر قلب وليس MaxInt
:
!GH6G = 21 47 48 36 47
وأفضل قاعدة لحفظها هي:
21 (الرقم السحري!)
47 (فقط تذكرها)
48 (تسلسلي!)
36 (21 + 15، كلا السحرين!)
47 مرة أخرى
كما أنه من الأسهل تذكر 5 أزواج من 10 أرقام.
بافتراض .NET -
Console.WriteLine(Int32.MaxValue);
ومن المثير للاهتمام أن Int32.MaxValue يحتوي على أحرف أكثر من 2,147,486,647.
ولكن مرة أخرى، لدينا إكمال التعليمات البرمجية،
لذا أعتقد أن كل ما علينا أن نحفظه هو Int3<period>M<enter>
, ، والتي تتكون من 6 أحرف فقط للكتابة في الاستوديو المرئي.
تحديثلسبب ما تم التصويت ضدي.السبب الوحيد الذي يمكنني التفكير فيه هو أنهم لم يفهموا بياني الأول.
يستغرق "Int32.MaxValue" 14 حرفًا على الأكثر للكتابة.يستغرق 2,147,486,647 10 أو 13 حرفًا للكتابة اعتمادًا على ما إذا كنت قد وضعت الفواصل أم لا.
أسهل طريقة للتذكر هي النظر std::numeric_limits< int >::max()
على سبيل المثال (من 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;
}
فقط تذكر أن 2^(10*x) يساوي تقريبًا 10^(3*x) - ربما تكون معتادًا بالفعل على ذلك مع الكيلوبايت/الكيبيبايت وما إلى ذلك.إنه:
2^10 = 1024 ~= one thousand
2^20 = 1024^2 = 1048576 ~= one million
2^30 = 1024^3 = 1073741824 ~= one billion
نظرًا لأن int يستخدم 31 بت (+ ~1 بت للعلامة)، فما عليك سوى مضاعفة 2^30 للحصول على ما يقرب من 2 مليار.بالنسبة إلى int غير الموقع باستخدام 32 بت، تضاعف مرة أخرى للحصول على 4 مليار.يزداد عامل الخطأ كلما زاد حجمه بالطبع، لكنك لا تحتاج إلى حفظ القيمة الدقيقة (إذا كنت في حاجة إليها، فيجب عليك استخدام ثابت محدد مسبقًا لها على أي حال).تعتبر القيمة التقريبية جيدة بما يكفي لملاحظة متى قد يكون هناك شيء قريب بشكل خطير من الفيضان.
هذه هي الطريقة التي أفعل بها ذلك لأتذكر 2,147,483,647
إلى ربع السافانا البعيد، قام أوبتيموس الثلاثي بأربعين من السبعين
2 - To
1 - A
4 - Far
7 - Savannah
4 - Quarter
8 - Optimus
3 - Trio
6 - Hexed
4 - Forty
7 - Septenary
ماذا تقصد؟يجب أن يكون من السهل أن تتذكر أنها 2 ^ 32.إذا كنت تريد قاعدة لحفظ قيمة هذا الرقم، فهناك قاعدة مفيدة للتحويل بين النظام الثنائي والعشري بشكل عام:
2^10 ~ 1000
وهو ما يعني 2 ^ 20 ~ 1،000،000
و2^30 ~ 1,000,000,000
مضاعفة ذلك (2^31) يساوي 2 مليار تقريبًا، ومضاعفة ذلك مرة أخرى (2^32) يساوي 4 مليارات.
إنها طريقة سهلة للحصول على تقدير تقريبي لأي رقم ثنائي.10 أصفار في النظام الثنائي تصبح 3 أصفار في النظام العشري.
كعالم فيزياء أود أن أقوم بذلك 2 بليون (شبه نكتة).سهل التذكر!
في Objective-C (iOS وOSX)، تذكر فقط وحدات الماكرو هذه:
#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