Я нахожу этот вопрос довольно запутанным.
byte
обычно определяется как наименьшее адресуемое устройство, поэтому, говоря, что у машины есть байт-адресуемая память, просто ничего не говорится: каждая машина имеет байтовую адресную память, потому что это определение того, что такое байт, что может измениться, сколько бит - это байт.
Если речь идет о 32-разрядной байт-машине (я знаю, что они существуют, но я лично использовал только машины с 8-битными и 16-разрядными байтами), тогда неясно, какую роль играет конечная информация что для хранения ASCII не требуется многобайтовой обработки. Что часто делается на больших байт-машинах, однако, хранение нескольких символов на байт для экономии места (не обязательно, что 16-разрядная байт-машина «большая»: тот, который я знаю, является DSP с очень ограниченным объемом памяти), но это кажется не связанным с вопросом, и там так «стандартный» способ сделать это в любом случае.
Если вместо этого вопрос предполагает, что байт всегда по 8 бит по определению и говорит о сохранении символов ASCII, то снова endian-ness не играет никакой роли; символы просто хранятся в памяти один за другим в последовательных местах. Например, если строка "johnson"
была сохранена (в предположении С строковое конвенции) содержание памяти будет:
0x6A 0x6F 0x68 0x6E 0x73 0x6F 0x6E 0x00
Чтение этого содержимого памяти в виде двух 32-битовых слов будут затронуты порядок байтов, конечно, но говоря, что машина использует big-endian и просят отобразить результат в little-endian схеме, это вздор.
В схеме большого конца (например, 68k) два 32-разрядных слова будут 0x6A6F686E
и 0x736F6E00
в схеме с маленьким концом (например,x86), они будут 0x6E686F6A
и 0x006E6F73
.
Ответ Игнасио Васкеса-Абрамса правильный, но только комментарий к вашему предварительному ответу: если ваша машина имеет 32-битные слова, вы должны «упаковывать» 4 символа в слово, а не два, как кажется, вы делаете с вашими обозначениями. Правильный ответ должен быть [6a, 6f, 68,6e], [73,6f, 6e, 00]. Похоже, может быть, это трюк, потому что я думаю, что многие люди могут изменить порядок байтов в двух словах, когда увидит «маленькую сущность» в проблеме. –
Эй, Рэй! Большое спасибо за ваш комментарий. Я был в замешательстве, потому что увидел, что у Endian есть самый значительный байт с наименьшим байтовым адресом и наоборот для Little Endian. Означает ли это, что оба ответа с маленьким концом/большим концом совпадают? Для большого Endian я получил: характер: Джонсон [NULL] содержания в шестнадцатеричном: 6A, 6F, 68, 6E, 73, 6F, 6E, 00 байт адреса: 1000, 1001, 1002, 1003, 1004, 1005 , 1006, 1007 Маленький сущ.: –
Дело в том, что утверждение относится к словам или размерам большего размера, а не к размерам байтов. Поэтому, если бы я захотел сохранить значение 7 по адресу 1000 и значение 260 (это 104 в шестнадцатеричном формате) по адресу 1004, то в _литом endian_ два слова будут иметь значение 07000000 и 04010000, но в случае с большим концом мы будем иметь 00000007 и 00000104 Таким образом, вы видите только разницу для многобайтовых величин. Символы ASCII кодируются по одному байту, поэтому они выглядят одинаково в любом случае. Тоже для таких вещей, как UTF-8, которые явно используют куски размером _byte. –