انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: morteza1991 در 12 مهر 1389، 04:51 بظ
-
داشتم در مورد آرایه ها می خوندم که رسیدم به این مطلب :
به طوركلي اگر هر عنصر از آرايه با نام ،aبه اندازه sizeبايت فـضا اشـغال كنـد، محـل
عنصر iام بهصورت زير محاسبه ميشود:
Loc(i)=base(a)+i*size
اول فکر کردم اشتباه هست. چون کوچکترین واحد حافظه بیت هست و باید به بیت ها آدرس دهی بشه
ولی تو c امتحان کردم و آدرس دو عنصر پشت سر هم یک آرایه رو بدست آوردم و دیدم که دیدم اختلافشون با هم ۴ واحد هست. و نوع int هم بدست آوردم و دیدم ۴ بایت هست.
حالا موندم که که اگه اینجوری باشه چجوری cpu به بیت ها دسترسی پیدا میکنه و روشون عملیات رو انجام میده.
-
منظورت چیه از اینکه میگی چه جوری؟
خب اون چهار بایت از حافظه به cpu فراخوانی میشه و در یک ثبات چهار بیتی ذخیره میشه. بعد بوسیله مدارهایی که تو cpu هست عملیات روشون انجام میشه.
-
اول فکر کردم اشتباه هست. چون کوچکترین واحد حافظه بیت هست و باید به بیت ها آدرس دهی بشه
اگرچه کوچکترین واحد حافظه بیت است ولی برخلاف تصور شما بیت ها در حافظه آدرس پذیر نیستند یعنی کوچکترین واحد آدرس دار در حافظه بایت است. یک بیت به تنهایی برای CPU معنای خواصی ندارد و دستورالعمل های ماشین خیلی طولانی تر از یک بیت هستند (چند بایت با توجه به معماری سیستم ) بنابراین طبیعی است که نیازی به درخواست یک بیت از حافظه نیست و به همین دلیل نیازی هم به آدرس پذیر بودن بیت ها نیست.
اگر کسی در این میان نیاز به داده ای یک بیتی داشته باشد آن CPU نیست بلکه شما به عنوان یک برنامه نویس ممکن است به یک بیت نیاز داشته باشید. در این حالت مجبور هستید یک بایت کامل را از حافظه بگیرید و در یکی از رجیستر ها ذخیره کنید. آن گاه با استفاده از اعمال منطقی (and) و شیفت ، بیت مورد نظر خود را بدست آورید.
-
اگرچه کوچکترین واحد حافظه بیت است ولی برخلاف تصور شما بیت ها در حافظه آدرس پذیر نیستند یعنی کوچکترین واحد آدرس دار در حافظه بایت است. یک بیت به تنهایی برای CPU معنای خواصی ندارد و دستورالعمل های ماشین خیلی طولانی تر از یک بیت هستند (چند بایت با توجه به معماری سیستم ) بنابراین طبیعی است که نیازی به درخواست یک بیت از حافظه نیست و به همین دلیل نیازی هم به آدرس پذیر بودن بیت ها نیست.
اگر کسی در این میان نیاز به داده ای یک بیتی داشته باشد آن CPU نیست بلکه شما به عنوان یک برنامه نویس ممکن است به یک بیت نیاز داشته باشید. در این حالت مجبور هستید یک بایت کامل را از حافظه بگیرید و در یکی از رجیستر ها ذخیره کنید. آن گاه با استفاده از اعمال منطقی (and) و شیفت ، بیت مورد نظر خود را بدست آورید.
=D>
-
اول فکر کردم اشتباه هست. چون کوچکترین واحد حافظه بیت هست و باید به بیت ها آدرس دهی بشه
اگرچه کوچکترین واحد حافظه بیت است ولی برخلاف تصور شما بیت ها در حافظه آدرس پذیر نیستند یعنی کوچکترین واحد آدرس دار در حافظه بایت است. یک بیت به تنهایی برای CPU معنای خواصی ندارد و دستورالعمل های ماشین خیلی طولانی تر از یک بیت هستند (چند بایت با توجه به معماری سیستم ) بنابراین طبیعی است که نیازی به درخواست یک بیت از حافظه نیست و به همین دلیل نیازی هم به آدرس پذیر بودن بیت ها نیست.
اگر کسی در این میان نیاز به داده ای یک بیتی داشته باشد آن CPU نیست بلکه شما به عنوان یک برنامه نویس ممکن است به یک بیت نیاز داشته باشید. در این حالت مجبور هستید یک بایت کامل را از حافظه بگیرید و در یکی از رجیستر ها ذخیره کنید. آن گاه با استفاده از اعمال منطقی (and) و شیفت ، بیت مورد نظر خود را بدست آورید.
متشکرم.
در مورد آدرس منطقی و آدرس فیزیکی هم توضیحاتی می فرمایید