شرح Big Endian و Little Endian .

1337r00tمنذ 5 سنوات

السلام عليكم ورحمة الله وبركاته

--------------------

الحمد لله على جميع نِعمه علينا ما علمنا منها وما لم نعلم حمداً والصلاة والسلام على نبينا محمد اشرف الخلق والمرسلين, اما بعد :-

--------------------

# تاريخ Endianness :-
في 1980 كتب Danny Cohen ورقة بأسم (On Holy Wars and a Plea for Peace) حيث ذكر Endianness والذي تعني مجموعة من Bits يتم ترتيبهم في byte ووضعهم في الذاكرة بنظام معين ويوجد نظامين وهم Least Significant و Most Significant حيث ذكر Danny Cohen في (On Holy Wars and a Plea for Peace) ال Big Endian و Little Endian وعلاقته مع MSB/LSB .

--------------------

# ماهو Least Significant و Most Significant :-
هم يمثلوا البداية (أكبر عدد من السلسلة) والنهاية (أقل عدد من السلسلة) للسلسلة العددية, لنأخذ مثال بسيط مثلا لدينا 0x11223344 ونريد ان نعرف MSB و LSB في big-endian و little-endian :-

For Example: 0x11223344: In Big Endian
          +-------+-------+-------+---------+v
          | 0x11  | 0x22  | 0x33  |  0x44   |
          +-------+-------+-------+---------+
            MSB                       LSB
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For Example: 0x11223344: In Little Endian
          +-------+-------+-------+--------+
          | 0x44  | 0x33  | 0x22  |  0x11  |
          +-------+-------+-------+--------+
             MSB                     LSB


كما نرى في Big Endian كان MSB هو 0x11 و LSB هو 0x44 والعكس صحيح في Little Endian, اي بمعنى ان MSB هو أول Byte او Bit يدخل السلسلة والLSB هو أخر Bit يدخل السلسلة .

--------------------------------

# الفرق بين Big Endian و Little Endian :-
هو مجرد ترتيب فمثلا لدينا 0x13243545 :-
في Big Endian لن يتغير شيئا وسوف تراه 0x13243545 (MSB->LSB) .
لكن في Little Endian سوف تراه بهذا الشكل 0x45352413 (LSP->MSB) .
سوف تلاحظون ان bits أصبحت مقلوبه او معكوسه ! هذا هو الفرق ! لكن مالسبب ؟
السبب ان يوجد Processors تستخدم Little Endian وأغلب Processors حاليا تعتبر Little Endian .

[Little Endian] Processors : Intel x86 (32 bit) , Intel x86_64 (64 bit) and Dec VAX
[Big Endian] Processors : Motorola 68000, PowerPC (PPC) and IBM S/390


هل هناك Processors تعمل مع نظام Big Endian و Little Endian سويا ؟ نعم يوجد !
 

[bi(big/little)-endian] Processors : Alpha, ARM, and IA-64 (64 bit)

 

# كود C للتحقق اذا جهازك يستخدم نظام Little Endian او Big Endian :-
 

#include <stdio.h>
int main(){
   unsigned int x = 0x12345678;
   char *p = (char *) &x;
   if(*p == 0x78)
      printf("Your Processor is Little Endian\n");
   else
      printf("Your Processor is Big Endian\n");
   return 0;
}


أتمنى أن الشرح كان مفهوم - فإن أخطئت ف من نفسي والشيطان وإن أصبت فهذا من فضل ربي .

كلمات دليلية: big endian
1
إعجاب
3842
مشاهدات
0
مشاركة
2
متابع

التعليقات (1)

عبد الله:

وعليكم السلام ورحمة الله وبركاته

اخوي انا متابع لمواضيعك واشكرك على طرحك للمواضيع المفيدة.

بخصوص هذا الموضوع ياليت توضح اكثر عن الموضوع لاني لم اصل للهدف منه ولا ما الذي يمكنني الاستفادة منه.

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !