موضوع مقاله: اندیان | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # اندیان | مقدمه: یک رایانه بیگ اندین بایت پرارزش متغیر را در ابتدایی‌ترین خانه حافظه ذخیره میکند، در حالیکه یک رایانه لیتل اندین کم ارزش‌ترین بایت متغیر را در ابتدایی‌ترین خانه حافظه ذخیره مینماید. | ## بخش 1: اندیان | چنانچه در شکلهای روبرو می بینیم اگر داده خود را 0A0B0C0Dh در نظر بگیریم در سیستم‌های بیگ اندین 0Ah در اولین خانه حافظه دخیره می‌شود در حالیکه در سیستم‌های لیتل اندین در آخرین فضای حافظه جای گرفته‌است. برای داده 0000111111110000b نیز به همین ترتیب، ۸ بیت پر ارزش، یعنی 00001111b در سیستم بیگ اندین در ابتدایی‌ترین خانه حافظه و در سیستم لیتل اندین در آخرین خانه حافظه می‌گیرد. مثلاً در PDP-11 کامپایلر مقادیر را مانند روش بیگ اندین اما با فرمت ۱۶ بیتی لیتل اندین ذخیره می‌کند. جهت افزایش مقدار آدرس حافظه: → … 0Ch 0Dh 0Ah 0Bh … بی اندین سخت افزارهای دارای معماری بی اندین قابلیت سوئیچ بین دو حالت بیگ اندین و لیتل اندین را در سگمنت داده، سگمنت کد یا هر دو سگمنت را دارد. بسیاری از این سخت افزارها قابلیت انتخاب فرمت پیش‌فرض اندین را از طریق نرم‌افزار دارند، اما در برخی از آن‌ها نیز حالت اندین را مادربرد انتخاب می‌کند و قابل تغییر نیست. تفاوت‌ها در حالت لیتل اندین، در صورتی که مقدار AB000000h در خانه‌ای ۴ بایتی از حافظه قرار داشته باشد، و چهار متغیر داشته باشیم که به این خانه از حافظه اشاره کنند، متغیر ۸ بیتی دارای ABh، متغیر ۱۶ بیتی دارای 00ABh، متغیر ۲۴ بیتی دارای 0000ABh و متغیر ۳۲ بیتی دارای 000000ABh خواهد بود. هرچند این قابلیت سیستم‌های لیتل اندین بسیار به ندرت توسط برنامه نویسان یک زبان برنامه‌نویسی سطح بالا مانند زبان سی شارپ استفاده می‌شود، اما در برخی زبان‌ها مانند زبان اسمبلی جهت بهینه‌سازی نرم‌افزار و همچنین سیستم عامل‌ها بسیار کاربردی است. | ## بخش 2: اندیان | به عنوان مثال در معماری ۳۲ بیتی x86 اینتل و نسخه ۶۴ بیتی آن که به X86-64 ای ام دی معروف است و امروزه در کامپیوترهای رومیزی استفاده‌های فراوانی دارند، از سیستم لیتل اندین استفاده می‌شود، در حالی که در معماری IBM z/Architecture از سیستم بیگ اندین استفاده می‌شود. معماری ARM نیز که در دستگاه‌های کوچک مانند تلفن‌های هوشمند و تبلت‌ها پرکاربرد هستند، بی اندین است و قابلیت سوییچ کردن بین حالت‌های بیگ اندین، لیتل اندین و میدل اندین را داراست. در صورتی که چنین چیزی در RFC مربوط پیش‌بینی نشده باشد، معمولاً از روش بیگ اندین که در RFC 1700 ( استاندارد اینترنت ) تعبیه شده است، استفاده می‌شود، هرچند تمامی پروتکل‌ها به این روش پایبند نیستند. فایل‌ها فایل‌های داده‌ای مانند فایل‌های متنی txt، از روش بیگ اندین استفاده می‌کنند اما فایل‌های متنی یونیکد می‌توانند با چند بایت خاص که به BOM مشهورند شروع شوند و نوع قرارگیری بایت‌ها را مشخص کنند. فایل‌های تصاویر TIFF نیز با توجه به اینکه دارای پرچمی خاص هستند، قابلیت استفاده از هر دو حالت را دارند. بنابراین هر نوع فایل می‌تواند از هر روشی خاص جهت ذخیره‌سازی استفاده کنند و بستگی به شیوه مهندسی آن نرم‌افزار خاص دارد. همچنین، فایل‌های اجرایی برنامه ها، با توجه به نوع کامپایلر می‌تواند متفاوت باشد که این مسئله باعث می‌شود یک برنامه که توسط کامپایلر بیگ اندین کامپایل شده، در سیستم‌های لیتل اندین قابل اجرا نباشد. | ## بخش 3: اندیان | برخی نیز به صورت خودکار، حالت ذخیره خود را تغییر می دهند و روی سخت افزارهای مختلف قابل اجرا هستند. در صورتی که کامپایلر از این قابلیت پشتیبانی نکند و برنامه‌نویس بخواهد که فایل کامپایل شده نرم‌افزارش بر روی تمامی سیستم‌ها اجرا شود باید خود دست به کار شود. هرچند فایل‌های PHP را می‌توان با نرم‌افزارهای مختلف کامپایل کرد و این فایل‌ها و باز هم مستقل از سخت افزار هستند، چون وابسته به خود مفسر php هستند. زبان‌هایی که دارای مفسر هستند، مستقل از سخت افزار هستند، مانند زبان‌های PHP و جاوااسکریپت. این زبان‌ها برخلاف زبان‌های سطح پایین، معمولاً دسترسی چندانی به خانه‌های حافظه نمی‌دهند، هرچند برای زبان‌هایی مانند PHP می‌توان افزونه‌هایی نوشت تا دسترسی به خانه‌های حافظه را ممکن سازد اما در زبان‌هایی مانند JavaScript چنین چیزی به دلایل امنیتی غیرممکن است. | ## جمع‌بندی | روش تغییر ایندین نمونه کد زیر که به زبان C می‌باشد، یک مقدار عددی ۳۲ بیتی بدون علامت را دریافت کرده و آن را از حالت بیگ اندین به لیتل اندین و بلعکس تبدیل می‌کند.