مشاهده نسخه کامل
: چند بيتي هست؟
سلام
يك سيستم جحلوي ما بگذارند . چطور بفهميم چند بيتي هستش؟ 16 24 32 ؟
اين بيت سيستم بستگي به چه چيزي داره؟
سیستم خونه میدونم 32 بیتی هست.
اما وقتی ما sizeof از متغیر int میگیریم میگه دو بایت الان اشغال شده در سیتسم.
در صورتی که سیستم های 32 بیتی متغیر int رو به صورت 4 بایتی ذخیره میکنند.
جریان چیه؟
حالا همین دستور رو وقتی رو لپ تاپ 64 بیتی میزنم میگه 4 بایت هست
چه رابطه و فرمولی وجود داره؟
بعد مثلا ما میگیم در سیستم های 16 بیت که دو بایت از حافظه رو اشغال میکنیم. از منفتی تا مثبت عدد 32628 میتوینم حرکت کنیم.
و در سیتسم های 32 بیتی که 4 بایت از حافظه رو اشغال میکنیم میتونیم تا 2147483647 حرکت کنیم.
یعنی مقادیر int ما در سیستم ها فرق میکنه؟
یعنی یک برنامه میتونه با مقادیر بالا در یک سیستم 16 بیتی ارور بگیره ازمون و در یک سیستم 32 بیتی یا 64 بیتی اجرا بشه؟
Open-Source
05-07-2011, 11:50
بله.
اندازه متغییر ها بسته به نوع سیستم عامل فرق میکنه.
مثلا حداقل int اندازش 2 بایت هستش ولی ممکنه توی یه سیستم int رو 4 بایت در نظر بگیره.
البته اینا به کامپایلر هم بستگی داره.
اگه با .net کار میکنی ، صراحتا نوع متغییرت رو معیین کن (مثلا Int32).
بله.
اندازه متغییر ها بسته به نوع سیستم عامل فرق میکنه.
مثلا حداقل int اندازش 2 بایت هستش ولی ممکنه توی یه سیستم int رو 4 بایت در نظر بگیره.
البته اینا به کامپایلر هم بستگی داره.
اگه با .net کار میکنی ، صراحتا نوع متغییرت رو معیین کن (مثلا Int32).
والا نه فعلا روی سی پلاس پلاس زوم کردم. سراغ . نت نرفتم.
خوب قاعده اش چیه؟
ما از کجا بفهمیم کجا دو بایت و کجا چهار بایت اندازه گیری میکنن؟
خوب من یک کدی زدم. اما تو سیتسمی که 32 بیتی هست و int اون 2 بایتی برنامه جواب نمیده
اما تو سیتسم 64 بیتی که int اون 4 بایتی هست جواب میده
منظورم این هست که پس طبیعی هست این مشکل؟ که در سیتسم 32 بیتی جواب نده این برنامه؟ چون int اون دو بایت هست؟
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int intvar=1500000000;
intvar =(intvar * 10)/10;
cout<<"intvar = "<<intvar<<endl;
intvar=1500000000;
intvar =(static_cast<double>(intvar)*10)/10;
cout<<" intvar = "<<intvar<<endl;
getche();
}
بستگي به كامپايلر هم داره
در ويوال سي پلاس پلاس سيستم 32 بيتي int ميشه 4 بايت
اما تو همون سيستم با turbo c++ ميشه 2 بايت.
چرا؟
کامپایلرها حداقل سایز رو همه رعایت میکنن ولی برای حداکثر ممکنه رنج های مختلفی استفاده کنن که با اون چیزی که سیستم عامل تعریف کرده متفاوت باشن
مثلا استاندارد میگه که char باید انقدر بزرگ باشه که همه کاراکتر ها رو بتونه جا بده و از حداکثر خبری نیست
زیاد روش وقت نزاشتم ولی تو این فوروم ها و سایتای خارجی زیاد دیم تو سروکله همدیگه میزنن بابت این موضوع و بحث های خوبی میشه اگه زبانت خوبه تو stackoverflow رو نگاه بکن
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.