سؤال

لا أستطيع أن أتذكر الرقم أبدا.أحتاج إلى قاعدة الذاكرة.

هل كانت مفيدة؟

المحلول

إنه 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...

مصدر: http://www.subidiom.com/pi/

إنه مكون من 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 أرقام وتذكرها بصريًا باستخدام العرض على لوحة مفاتيح هاتفك الخلوي.من الأسهل أن تظهر على الصورة:

enter image description here

كما ترون، من الآن فصاعدا عليك فقط أن تتذكر 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top