سؤال عن موضوع تخزين قيم ints في ذاكرة الحاسب (عند التحويل من float إلى int )

السلام عليكم شباب:

There is another aspect of the operation: converting a float into an int is not always feasible. Integer variables (like the floats) have a limited capacity. They cannot contain arbitrarily large (or arbitrarily small) numbers. For example, if a certain type of computer uses four bytes (i.e. 32 bits) to store int values, you are only able to use the numbers from the range of -2147483648..2147483647.

ماذا يُقصد بالضبط من أخر عبارة : إنك قادر فقط على استخدام أعداد تتراوح من ......إلى ........ ؟ و لماذا كُتبت لهذا الشكل؟

و شكراً .......


ما يحاول اخبارك به في اخر عبارة هو:

اذا كان هناك نوع من الحواسيب يستخدم 4 بايت (32 بت) في الذاكرة لتخزين الرقم, فانه سيتسع الى رقم من -2147483648 الى 2147483647. انتهى كلامه.

تخيل ذاكرة من 4 بايت, ستكون كلتالي

00000000 00000000 00000000 00000000

كل خانة ستحتوي اما على 0 او 1, آخر بت في هذه المجموعة سيحتوي على الاشارة اي 1 سالب 0 موجب

والاعداد تبدأ من اليمين الى اليسار, (يمين اقل يسار اكثر) بشكل متضاعف بهذا الشكل:

1 2 4 8 16 32 64 .. الى ان يضل الى البت القبل الاخير (الاخير مخصص للاشارة) وبذلك يكون اكبر قيمة ممكن تحصيلها هي : 2147483648

مثلاً لنحاول تخزين رقم سالب 3 في الذاكرة, سيكون كلتالي:

00000011 00000000 00000000 10000000

اي ان الرقم هو مجموع قيم اماكن ال 1

لا ادري ان كان شرحي واضح .. لكن هذا المقال من ويكيبيديا

وابحث اكثر في جوجل, واقرأ كتاب عن معمارية الحاسوب (computer architecture)

شكراُ على الرد الرائع

كيف عرفنتا أن أكبر قيمة هي 2147483648؟

لان مجموع قيم البتات عدا بت الاشارة يساوي هذا الرقم, قيمة كل بت هي مضاعف قيمة البت الذي قبله من اليمين الى اليسار, ونبدأ من 1 ثم 2 ثم 4 .. الى ان نصل الى البت رقم 31

وتحسب من خلال 2 قوة (عدد البتات - بت الاشارة), في مثالنا الحالي 2 قوة 31

(2^32) -1

2 قوة 31 وليس 32 لان هناك بت مخصص للاشارة, في حال كنا نتعامل مع ارقام موجبة فقط, فنستخدم 32

خطأ مطبعي .. شكرا على التصحيح ..