Должен ли я беспокоиться о Big Endianness или это всего лишь тривиальный аспект? - PullRequest
1 голос
/ 08 марта 2012

Много ли компьютеров используют Big Endian?Я только что проверил на 5 разных компьютерах, каждый из которых приобретен в разные годы, и разных моделях.Каждый использует Little Endian.Big Endian все еще используется в наши дни или для старых процессоров, таких как Motorola 6800?

Редактировать:

Спасибо, TreyA, intel.com / design / intarch / paper /endian.pdf - очень хорошая и удобная статья.Он охватывает все ответы ниже, а также расширяет их.

Ответы [ 5 ]

5 голосов
/ 08 марта 2012

В настоящее время используется много процессоров с прямым порядком байтов или разрешающим переключать режим с прямым порядком байтов между старшим и младшим (например, SPARC, PowerPC, ARM, Itanium ...).

Это зависит от того, что вы подразумеваете под "заботой о порядке байтов". Обычно вам не нужно особенно заботиться об бесконечности, если вы просто программируете нужные данные. Endian имеет значение, когда вам нужно общаться с внешним миром, таким как чтение / запись файла или отправка данных по сети, и вы делаете это, читая / записывая целые числа больше 1 байта непосредственно в / из памяти.

Когда вам нужно работать с внешними данными, вам нужно знать их формат. Часть его формата, например, знать, как целое число закодировано в этих данных. Если формат указывает, что первый байт 4-байтового целого числа является самым значимым байтом указанного целого числа, вы читаете этот байт и помещаете его в самый значимый байт целого числа в вашей программе, и вы сможете выполнить этот штраф с кодом, который работает как на маленьких, так и на больших байтовых машинах.

Таким образом, речь идет не столько о бесконечности процессора, сколько о данных, с которыми вам нужно иметь дело. В этих данных могут быть целые числа, хранящиеся либо в «порядковом порядке», вам нужно знать, какие именно, и в разных форматах данных будет использоваться различный порядковый номер в зависимости от какой-либо спецификации или от прихоти парня, который придумал этот формат.

3 голосов
/ 08 марта 2012

Big endian до сих пор наиболее часто используется с точки зрения различных архитектур.Фактически, за исключением Intel и старых компьютеров DEC, я не знаю ни одного порядка с прямым порядком байтов: Sparc, Power PC (машины IBM Unix), платформы HP Unix, мэйнфреймы IBM и т. Д. - все с прямым порядком байтов.Но имеет ли это значение?Приблизительно единственное время, которое мне приходилось учитывать, - это реализация некоторых низкоуровневых системных подпрограмм, таких как modf.В противном случае int - это целочисленное значение в определенном диапазоне, и все.

1 голос
/ 08 марта 2012

Следующие распространенные платформы используют кодирование с прямым порядком байтов:

  • Java
  • Сетевые данные в пакетах TCP / UDP (возможно, даже на уровне IP, но я не уверен в этом)

Процессоры x86 / x64 с прямым порядком байтов. Если вы собираетесь взаимодействовать с двоичными данными между ними, вы обязательно должны знать об этом.

0 голосов
/ 08 марта 2012

Это квалифицируется скорее как комментарий, чем как ответ, но я не могу комментировать, и я думаю, что это такая замечательная статья для чтения, что я думаю, что она стоит.

Это классика по порядку байтов Дэнни Коэна, датированная 1980 годом: НА СВЯТЫХ ВОЙНАХ И ПЛЕЯ ДЛЯ МИРА

0 голосов
/ 08 марта 2012

Недостаточно контекста для вопроса.В общем, вы должны просто знать об этом все время, но вам не нужно подчеркивать это в повседневном кодировании.Если вы планируете возиться с внутренними байтами ваших целых чисел, начните беспокоиться о порядке байтов.Если вы планируете выполнять стандартную математику для ваших целых чисел, не беспокойтесь об этом.

Два больших места, где всплывает endianness, - это сетевые (стандарт с прямым порядком байтов) и двоичные записи (нужно исследовать, целые лихранится с прямым порядком байтов или с прямым порядком байтов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...