PDA

نسخه کامل مشاهده نسخه کامل : ذخیره ی اطلاعات بر روی رم در زبان سی



amir_70
31-07-2013, 16:24
سلام ب همه

دوستان یه سوالی داشتم خداییش خودمم موندم به برنامه نویسی مربوطه یا ب سخت افزار و رم

به حر حال مبپرسم مدیران اگه دیدن جاش مناسب نیست بابا منتقل کنید دیگه حذف نکنید

ببینید فرض کنید من توی سی یه متغییر از نوع int تعریف میکنم مثلا x=3
این دستور یه متعیر ب اسم x تو رم من ذخیره میکنه...چون از نوع int هست تو کامپیوتر من ۴ , byte رو اشغال میکنه...حالا اگه بعدش من یه دستور بنویسم که بخوام از این متغیر x استفاده کنم کامپیوتر از کجا میفهمه که x در کجای حافظه ذخیره شده؟تا اونجایی که میدونم هر bit یه ادرسی داره ولی byte رو نمیدونم...در کل سوالم اینه که کامپیوتر از کجا میفهمه که متغیر x در کجای رم ذخیره شده؟

نمیدونم منظورمو رسوندم یا نه؟

resident2011
31-07-2013, 19:31
وقتی شما می نویسید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به انداز 4 بایت (به طور معمول) برای ما در حافظه جا رزرو میشه که به وسیله x به حافظه مورد نظر دسترسی پیدا می کنیم .خود x دارای یک آدرسه که این آدرس ،آدرس اولین بایت از حافظه اییه که برای ما رزرو شده و سیستم با داشتن همین آدرس می تونه بفهمه که کجای حافظه چه چیزی ذخیره شده یا ذخیره کنه و یا کجا قراره بره
یه نگاهی به کد زیر بندازید بیشتر متوجه خواهید شد.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کد بالا دقیقا نشون میده که هر متغیری که ما تعریف می کنیم خودش دارای یک آدرس .

amir_70
31-07-2013, 20:04
دوست عزیز مرسی از پاسخت بله اینو میدونستم که خود x یه ادرس داره ولی اونجایی که تو کدت زدی ادرس x این ادرس ایا اولین bit رو نشون میده یا اولین byte ؟؟؟

به عبارتی تو سیستم رم غیر اینه که به صورت خانه هایی مربع شکل در کنار هم در نظر میگیریم...ایا این مربع ها بایت رو مشخص میکنن؟یا بیت؟به عبارت مشخص تر توی رم هر بیت ادرس داره یا هر بایت؟

resident2011
01-08-2013, 04:22
آدرس اولین بایت از حافظه ای است که برای ما رزرو میشه اگه یکم بیشتر مثالی رو که براتون زدم بررسی میکردید خودتون متوجه میشدید.
واسه اینکه بیشتر متوجه بشید مثال رو اجرا کنید البته فقط قسمت آرایه رو


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگه خروجی به صورت زیر باشه

0x7FFF833E8308
0x7FFF833E830C
0x7FFF833E8310
0x7FFF833E8314
0x7FFF833E8318

هر آدرس با آدرس بعدی خودش به اندازه چهار واحد اختلاف داره .که دلیلش اینه که هر متغیر int تووی سیستم (سیستم بنده) 4 بایته .یعنی از طریق آدرسها به بایت دسترسی داریم نه بیتها .
به نظرتون با صرف داشتن این آدرس ها میشه مثلا به بیت چهارم بایت دوم دسترسی پیدا کرد؟
ولی در این شکی نیست که تمام داده ها در کامپیوتر به صورت بیت به بیت در خونه های حافظه ذخیر میشن و صد البته میشه بیت به بیت هر متغیری که ادرسش رو داریم دسترسی پیدا کرد .

abi.71
28-09-2013, 18:19
با سلام بچه یه سوال داشتم
چطوری میشه از رو ادرس متغییر مقدارشو بدست اورد؟