Порядок байтів: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
Немає опису редагування
Рядок 1:
'''Порядок байтів''' - метод запису [[Байт|байтів]] багатобайтових чисел в [[Інформатика|інформатиці]].
 
У загальному випадку, для представлення числа M, більшого 255 (тут <math>255=2^8-1</math> - максимальне ціле число, що записується одним [[Октет (інформатика)|октетом]]), доводиться використовувати декілька байтів-октетів. При цьому число'' M'' записується в позиційній системі числення за основою 256:
Рядок 21:
Змішаний порядок байтів ([[Англійська мова|англ]]. ''middle-endian )'' іноді використовується при роботі з числами, довжина яких перевищує машинне слово. Число представляється послідовністю машинних слів, які записуються у форматі, природному для даної архітектури, але самі слова слідують у зворотному порядку.
 
Класичний приклад ''middle-endian'' - представлення 4-байтних цілих чисел на 16 - бітних процесорах сімейства [[PDP-11|PDP- 11]] ( відомий як ''PDP- endian'' ) . Для представлення двохбайтних значень (слів) використовувався порядок'' little-endian'' , але 4-х байтне подвійне слово записувалося'' від старшого слова до молодшого''.
 
У процесорах [[VAX]] і [[ARM]] використовується змішане уявлення для довгих дійсних чисел .
Рядок 28:
Далі наведено приклад, в якому описується розміщення 4-байтового числа в [[ОЗП]] ЕОМ, доступ до якого може проводитися і як до 32-розрядному слову, і побайтно.
 
Всі числа записані в 16-ковій [[Система числення|системі числення]].
{| class="standard"
|+ Число: 0xA1B2C3D4
Рядок 42:
=== Порівняння ===
[[Файл:Endianmem.PNG|thumb|300px|right|Розміщення байтів слова в пам'яті Big-endian— та Little-endian-машин]]
Істотною перевагою little-endian в порівнянні з big-endian є те, що порядком запису вважається можливість «неявної типізації» цілих чисел при читанні меншого обсягу байт (за умови , що прочитане число поміщається в діапазон). Так, якщо в комірці пам'яті міститься число 0x00000022, то прочитавши його як int16 (два байти) ми отримаємо число 0x0022 , прочитавши один байт - число 0x22 . Однак, це ж може вважатися одночасно недоліком, тому що це може спричинити помилки втрати даних.
 
число поміщається в діапазон). Так, якщо в комірці пам'яті міститься число 0x00000022, то прочитавши його як int16 (два байти) ми отримаємо число 0x0022 , прочитавши один байт - число 0x22 . Однак, це ж може вважатися одночасно недоліком, тому що це може спричинити помилки втрати даних.
 
Навпаки, вважається що у little-ndian, в порівнянні з big-endian є «неочевидність» значення байтів пам'яті відлагодженні (послідовність байтів (A1, B2, C3, D4) насправді це означає 0xD4C3B2A1, для big-endian ця послідовність (A1, B2, C3, D4) читалася б «природним» для арабського запису чисел чином: 0xA1B2C3D4 ). Найменш зручним у роботі вважається middle-endian формат запису. Він зберігся тільки на старих платформах. Для запису довгих чисел (чисел, довжина яких істотно перевищує розрядність машини) зазвичай переважає порядок слів у числі little-endian (оскільки арифметичні операції над довгими числами здійснюються від молодших розрядів до старших) Порядок байтів в слові - звичайний для даної архітектури .
 
== Проблеми сумісності ==
Запис багатобайтового числа з пам'яті комп'ютера в файл або передача по мережі потребує дотримання відповідностей про те, який з байтів є старшим, а який молодшим. Прямий запис комірок пам'яті призводить до можливих проблем при перенесенні додатку з платформи на платформу.