تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 7 از 7

نام تاپيک: چند بيتي هست؟

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض چند بيتي هست؟

    سلام
    يك سيستم جحلوي ما بگذارند . چطور بفهميم چند بيتي هستش؟ 16 24 32 ؟
    اين بيت سيستم بستگي به چه چيزي داره؟

  2. #2
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    سیستم خونه میدونم 32 بیتی هست.
    اما وقتی ما sizeof از متغیر int میگیریم میگه دو بایت الان اشغال شده در سیتسم.
    در صورتی که سیستم های 32 بیتی متغیر int رو به صورت 4 بایتی ذخیره میکنند.
    جریان چیه؟

  3. #3
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    حالا همین دستور رو وقتی رو لپ تاپ 64 بیتی میزنم میگه 4 بایت هست
    چه رابطه و فرمولی وجود داره؟
    بعد مثلا ما میگیم در سیستم های 16 بیت که دو بایت از حافظه رو اشغال میکنیم. از منفتی تا مثبت عدد 32628 میتوینم حرکت کنیم.
    و در سیتسم های 32 بیتی که 4 بایت از حافظه رو اشغال میکنیم میتونیم تا 2147483647 حرکت کنیم.
    یعنی مقادیر int ما در سیستم ها فرق میکنه؟
    یعنی یک برنامه میتونه با مقادیر بالا در یک سیستم 16 بیتی ارور بگیره ازمون و در یک سیستم 32 بیتی یا 64 بیتی اجرا بشه؟
    Last edited by Life24; 05-07-2011 at 09:23.

  4. #4
    کاربر فعال انجمن گنو/لینوکس Open-Source's Avatar
    تاريخ عضويت
    Aug 2008
    محل سكونت
    usr/src/linux/
    پست ها
    763

    پيش فرض

    بله.
    اندازه متغییر ها بسته به نوع سیستم عامل فرق میکنه.
    مثلا حداقل int اندازش 2 بایت هستش ولی ممکنه توی یه سیستم int رو 4 بایت در نظر بگیره.

    البته اینا به کامپایلر هم بستگی داره.

    اگه با .net کار میکنی ، صراحتا نوع متغییرت رو معیین کن (مثلا Int32).

  5. این کاربر از Open-Source بخاطر این مطلب مفید تشکر کرده است


  6. #5
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    بله.
    اندازه متغییر ها بسته به نوع سیستم عامل فرق میکنه.
    مثلا حداقل 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();
    }

  7. #6
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    بستگي به كامپايلر هم داره
    در وي‍وال سي پلاس پلاس سيستم 32 بيتي int ميشه 4 بايت
    اما تو همون سيستم با turbo c++ ميشه 2 بايت.

    چرا؟

  8. #7
    آخر فروم باز MAXXX's Avatar
    تاريخ عضويت
    May 2006
    پست ها
    1,990

    پيش فرض

    کامپایلرها حداقل سایز رو همه رعایت میکنن ولی برای حداکثر ممکنه رنج های مختلفی استفاده کنن که با اون چیزی که سیستم عامل تعریف کرده متفاوت باشن
    مثلا استاندارد میگه که char باید انقدر بزرگ باشه که همه کاراکتر ها رو بتونه جا بده و از حداکثر خبری نیست

    زیاد روش وقت نزاشتم ولی تو این فوروم ها و سایتای خارجی زیاد دیم تو سروکله همدیگه میزنن بابت این موضوع و بحث های خوبی میشه اگه زبانت خوبه تو stackoverflow رو نگاه بکن
    Last edited by MAXXX; 06-07-2011 at 08:25.

  9. این کاربر از MAXXX بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •