Big-endian va Little-endian Formatlari
Endianness nima ?
"Endianness" — bu kompyuter xotirasida ko‘p baytli ma'lumotlarning qanday tartibda saqlanishini bildiruvchi tushuncha. Asosan, ikkita asosiy format mavjud:
Big-endian – Katta bayt birinchi (eng chapda) saqlanadi.
Little-endian – Kichik bayt birinchi (eng chapda) saqlanadi.
Kompyuter arxitekturasi va protsessorlar ushbu formatlardan birini yoki ikkalasini ham qo‘llab-quvvatlashi mumkin.
Big-endian Formati
Tavsif
Big-endian formatida ko‘p baytli ma'lumotning eng katta bayti (yoki yuqori bayti) xotirada birinchi (eng past manzil) saqlanadi.
Misol uchun, 0x12345678 raqamini 32-bit formatda big-endian ko‘rinishda tasavvur qilaylik:
0
0x12
1
0x34
2
0x56
3
0x78
Katta bayt birinchi, keyinchalik kichik baytlar keladi.
Qo‘llanilishi
Big-endian format tarmoq protokollarida (masalan, TCP/IP) ishlatiladi. Shuning uchun bu formatni ko‘pincha "network byte order" deb ham atashadi.
IBM PowerPC, SPARC kabi ba'zi protsessorlar big-endian formatdan foydalanadi.
Little-endian Formati
Tavsif
Little-endian formatida ko‘p baytli ma'lumotning eng kichik bayti (yoki pastki bayti) xotirada birinchi (eng past manzil) saqlanadi.
Misol uchun, 0x12345678 raqamini 32-bit formatda little-endian ko‘rinishda tasavvur qilaylik:
0
0x78
1
0x56
2
0x34
3
0x12
Kichik bayt birinchi, keyinchalik katta baytlar keladi.
Qo‘llanilishi
Intel x86 va x86-64 protsessorlari little-endian formatni qo‘llaydi.
ARM protsessorlari ham odatda little-endian formatda ishlaydi.
Big-endian va Little-endian Formatlarning Taqqoslanishi
Saqlash tartibi
Katta bayt birinchi, keyin kichik baytlar
Kichik bayt birinchi, keyin katta baytlar
Qo‘llanilish sohalari
Tarmoq protokollari, ba'zi protsessorlar
Intel protsessorlari, ko‘plab operatsion tizimlar
O‘qish tartibi
Odamlar o‘qishiga qulayroq
Mashina uchun tezroq ishlov berish
Misol – 16-bitli sonlarni saqlash
16-bitli 0xABCD qiymatni ko‘rib chiqamiz:
Big-endian ko‘rinish:
Little-endian ko‘rinish:
Kompilyator va Protsessorning Roli
Protsessor arxitekturasi ma'lumotlarni qaysi formatda saqlashni belgilaydi.
Kompilyator va operatsion tizim endiannessni avtomatik boshqaradi, ammo ba'zi tarmoqli va fayl formatlari bilan ishlashda dasturchi endiannessni nazorat qilishi kerak.
Misol uchun, tarmoq dasturlashida paketlar big-endian formatda bo‘ladi, shuning uchun little-endian tizimda ishlayotgan dastur big-endian ma'lumotlarni o‘qish va qayta yozish jarayonida konversiya (endianness conversion) amalga oshiradi.
C/C++ Dasturlashda Endiannessni Tekshirish
Quyidagi kod little-endian yoki big-endian formatni aniqlaydi:
Bu kodda agar 0x78
qiymat eng past manzilda saqlangan bo‘lsa, tizim little-endian, aks holda big-endian bo‘ladi.
Assemblyda Endianness bilan ishlash
Assemblyda ma'lumotlarni xotiradan o‘qishda yoki yozishda endiannessga e'tibor berish zarur. Quyida 32-bit sonni little-endian va big-endian formatda qanday yozilishini ko‘rsatadigan kodlar berilgan.
Little-endian format
Xotirada quyidagicha saqlanadi:
Big-endian format
Xotirada quyidagicha saqlanadi:
Endiannessni Konversiya qilish (Conversion)
Tarmoq dasturlarida ko‘pincha endiannessni o‘zgartirish talab qilinadi. C tilida buni htons()
, htonl()
, ntohs()
, va ntohl()
funksiyalari orqali amalga oshirish mumkin:
htons()
– 16-bitli qiymatni host (mahalliy) formatdan network (big-endian) formatga o‘zgartiradi.htonl()
– 32-bitli qiymatni host formatdan network formatga o‘zgartiradi.ntohs()
vantohl()
– teskari yo‘nalishda konversiya uchun ishlatiladi.
Amaliy Qo‘llanish
Tarmoq Protokollari: UDP va TCP paketlari big-endian formatda yuboriladi, chunki tarmoqlar uchun bu standart hisoblanadi.
Fayl Formatlari: Ba'zi fayl formatlari (masalan, JPEG, PNG) big-endian yoki little-endian formatlardan foydalanadi.
Platformaga Bog‘liq Ma'lumotlar: Dasturlashda ma'lumotlar formatining platformaga bog‘liqligi tufayli endiannessni nazorat qilish talab qilinishi mumkin.
Big-endian formatda katta bayt birinchi saqlanadi va ko‘pincha tarmoq protokollarida qo‘llaniladi.
Little-endian formatda kichik bayt birinchi saqlanadi va Intel kabi protsessorlarda qo‘llaniladi.
Endianness dasturlashda, ayniqsa tarmoq dasturlarida va ko‘p platformali ilovalarda muhim hisoblanadi. Ma'lumotlarni to‘g‘ri tartibda saqlash va qayta ishlash maqsadida endianness konversiya jarayonlari talab qilinadi.
Last updated