Little и big endian'ы
Довольно часто встречаю в документации вышеуказанные понятия, не могли бы вы популярно объяснить что сие значит?
little-endian - младшие разряды хранятся в младших битах
big-endian - младшие разряды хранятся в старших битах
little-endian - младшие разряды хранятся в младших битах
big-endian - младшие разряды хранятся в старших битах
Спасибо за разъяснение:)
little-endian - младшие разряды хранятся в младших битах
big-endian - младшие разряды хранятся в старших битах
Если совсем точно, то отличается порядок записи байт в слове:
little-endian - байты записываются, начиная с младшего
big-endian - байты записываются, начиная со старшего
Например, если у нас двойное слово (4 байта) и биты нумеруются, начиная с младшего (31..0), то в первом случае оно будет храниться в памяти так: 7..0|15..8|23..16|31..24, а во втором так: 31..24|23..16|15..8|7..0.
Первый способ применяется в процессоре Intel, а второй - в процессоре Motorola и некоторых других. Для программ это различие несущественно (компилятор для каждого процессора свой и он это учитывает), а вот при переносе двоичных файлов (например, bitmap-изображений) оно имеет значение.
Кстати, сами термины little-endian и big-endian в дословном переводе означеют "остроконечный" и "тупоконечный" (помните, у Свифта, "Гулливер в стране лилипутов", война между "остроконечниками" и "тупоконечниками").