اطلاعیه

Collapse
No announcement yet.

سوال در مورد حافظه ها

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد حافظه ها

    با سلام
    من برام این سوال ایجاد شده که وقتی ما یه متغیر رو از نوع int تعریف میکنیم براش 16 بیت حافظه در نظر گرفته میشه. یعنی 65536 خونه که میشه 8 کیلو بایت. پس اگه ما دوتا متغیر int تعریف کنیم باید حافظه atmega16 پر بشه ولی در واقع اینطوری نیس. این نشون میده این تحلیل من اشتباهه. دوستان بفرمایند که کجاشو دارم اشتباه میکنم؟!
    www.gam-co.blogsky.com

    #2
    پاسخ : سوال در مورد حافظه ها

    همونطور که اشاره کردید متغییر int 16 بیت هست، با 16 بیت میشه یک عدد دودویی از صفر تا 65535 ( 2 به توان 16 ) را نشان داد نه اینکه این تعداد خانه از حافظه گرفته شود، در واقع تنها 16 بیت یا در واقع دوتا 8 بایت از حافظه شما گرفته میشود.
    ضمن اینکه متغییرهایی که شما در برنامه تعریف میکنید در قسمت حافظه داده یا SRAM قرار میگیرند نه حافظه برنامه.
    از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
    هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
    اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
    اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
    شاد و موفق باشید

    دیدگاه


      #3
      پاسخ : سوال در مورد حافظه ها

      نوشته اصلی توسط Study
      در واقع تنها 16 بیت یا در واقع دوتا 8 بایت از حافظه شما گرفته میشود.
      دو تا 8 بیت یا دو بایت
      آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

      دیدگاه


        #4
        پاسخ : سوال در مورد حافظه ها

        نوشته اصلی توسط vahidabedi
        با سلام
        من برام این سوال ایجاد شده که وقتی ما یه متغیر رو از نوع int تعریف میکنیم براش 16 بیت حافظه در نظر گرفته میشه. یعنی 65536 خونه که میشه 8 کیلو بایت. پس اگه ما دوتا متغیر int تعریف کنیم باید حافظه atmega16 پر بشه ولی در واقع اینطوری نیس. این نشون میده این تحلیل من اشتباهه. دوستان بفرمایند که کجاشو دارم اشتباه میکنم؟!
        حالا که توجهتون به این بخش جلب شده یه مطلب میگم . چون الان جا میافته .
        چرا در avr اشاره گر پشته 2 بایته ؟
        .
        .
        .
        .
        .
        جواب : چون با 2 بایت میشه به 65536 خونه آدرس دهی کرد .
        حجم حافظه فلش ما چقدره ؟ مثلا در مگا 32 ؟ 32کیلو بایت یعنی ( 32*1024 بایت) میشه 32768 خونه . میبینیم که 2 بایت برای این آدرس دهی زیاد هم هست .
        إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
        کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

        دیدگاه


          #5
          پاسخ : سوال در مورد حافظه ها

          بله پویان خان منظورم همون 2 تا هشت بیت یا دوبایت بود.
          سید محمد عزیز اشاره گر پشته درسته که 2 بایت یا 16 بیت هست اما به فضای پشته اشاره میکنه که در واقع فضای رم هست نه فضای فلش میکرو، چیزی که به فضای فلش میکرو اشاره میکنه شمارنده برنامه هست، در آدرس دهی غیر مستیم میشه توسط زوج رجیسترهای X , Y ,Z به به خانه های حافظه فلش اشاره کرد اما پشته در واقع در فضای SRAM قرار میگیره، در بعضی از مدلها که حافظه کمتری دارند اشاره گر پشته بجای اینکه از دو بخش هشت بیتی SPH و SPL تشکیل بشه فقط شامل SPL هست و به فضای 2 به توان 8 یعنی 256 خانه میتونه اشاره کنه.
          از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
          هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
          اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
          اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
          شاد و موفق باشید

          دیدگاه

          لطفا صبر کنید...
          X