من تازه در حال برنامه نویسی هستم. تفاوت بین سیستم های 32 بیتی و 64 بیتی چیست؟ هنگام نوشتن برنامه C ++ چه چیزی را باید در نظر بگیرم؟


پاسخ 1:

آنچه دقیقا نمایانگر سیستم N-bit است ، همیشه توافق نمی شود. من شخصاً سیستمی کامپیوتری را تصور می کنم که ثبت جهانی پردازنده های آن N بیت های گسترده ای دارد.

به عنوان مثال ، رایانه دوم من دارای پردازنده موتورولا 68008 بود: دارای رجیستری 32 بیتی بود ، اما فقط با 16 بیت (نیمی از ثبت) داخلی کار می کرد و فقط با 8 بیت همزمان با حافظه خارجی ارتباط برقرار می کرد. اگرچه بخشی از یک خانواده CPU 32 بیتی است ، اما گاهی به آن CPU 8/16/32 بیتی گفته می شد. طبق تعریف من ، این یک CPU 32 بیتی است.

Intel i486 همچنین دارای رجیسترهای جهانی 32 بیتی است ، اما همچنین دارای امتیازات شناور 80 بیتی است: با این حال ، هیچ کس آن را یک رایانه 80 بیتی نمی داند.

وقتی C ++ را می نویسید ، به طور کلی از همه این پیشخوان های بیت محافظت می شوید ، اما اینها در اندازه ، جهت گیری و دامنه برخی از انواع اصلی منعکس می شوند. به عنوان مثال ، int به طور معمول یک نوع عدد صحیح 32 بیتی است و طول طولانی تقریباً همیشه یک عدد صحیح 64 بیتی است. بسته به سکو ، می تواند طولانی باشد. علاوه بر این ، نشانگرها به طور معمول 4 بایت در سیستم عامل های 32 بیتی و 8 بایت طولانی روی سیستم عامل های 64 بیتی دارند (و این اغلب مزیت اصلی سیستم های 64 بیتی نسبت به سیستم های 32 بیتی است: آنها می توانند به دلیل فاکتورهای زیر باشند: آدرس RAM اشاره گرهای گسترده تر).