1 | |
Порядок байт в big-endian и little-endian13.06.2013, 11:29. Показов 46332. Ответов 32
Метки нет (Все метки)
Всем привет! Народ подскажите мне пожалуйста простые прописные истины, а то я что то запутался!
Предположим что у нас в байте 8 - бит и где число 5 будет иметь вид 101. Как будет выглядеть число 5 в 2-х байтах памяти в big-endian и little-endian. 0000 0000 0000 0101 - big-endian ? 0000 0101 0000 0000 - little-endian ?
1
|
13.06.2013, 11:29 | |
Ответы с готовыми решениями:
32
Как объединить пару байт в слово? (Загрузка WAV, Big Endian) Из little endian в big endian Big-endian тестирование Как проще всего работать с Big-Endian C++ ? |
Ушел с форума
|
|
14.06.2013, 22:41 | 21 |
Компилятор может в процессе оптимизации сгенерировать такой машинный код, что
он будет лишь очень отдаленно напоминать оригинал: переменные могут быть перемешаны, помещены в регистры, и т.д. Кое-что вообще будет выкинуто за борт. В данном примере вы не можете быть наверняка уверенным, что переменная sizebyte располагается в памяти до sizebit, ровно как и наоборот. Точно также нельзя быть уверенным в том, что присваивание sizebyte выполняется до присваивания sizebit. Например, попробуйте сделать sizebyte и sizebit глобальными - вполне возможно, что вывод программы будет другим. Так что этот код некорректен. Для контроля над подобными вещами существуют барьеры компилятора, в Visual C++, например, это _ReadWriteBarrier и volatile. Хотя они предназначены в основном для многопоточного кода, а не для таких примеров.
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
14.06.2013, 22:44 | 23 |
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
14.06.2013, 22:49 | 25 |
Нумерация всегда идёт с начала, с какой бы стороны это начало не находилось
Добавлено через 1 минуту А что подробнее? Элемент массива с индексом 1 всегда имеет адрес больше, чем элемент с индексом 0. Всё.
2
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
14.06.2013, 22:51 | 27 |
А какой от этого толк?
2
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
14.06.2013, 23:04 | 29 |
Ну мне просто не очень понятно значение фразы "машинное представление нумерации адресного пространства".
Ну вот, допустим, есть физические адреса, которые выставляются на шине адреса, есть виртуальные адреса, с которыми работает наша программа на C/C++. Что из того, что между этими адресами может не быть ничего общего? Для программы достаточно, что адреса могут принимать только определённые значения и в массивах эти адреса возрастают от элемента к элементу. Что ещё можно узнать изнутри? По-моему ничего. Может я ошибаюсь...
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
14.06.2013, 23:11 | 31 |
Кстати, компиляторы обычно имеют ключи, позволяющие сохранить результат трансляции в виде программы на ассемблере. Visual C и GCC точно умеют (да вроде все что видел умели).
Иногда полезно посмотреть, что же "нагенерировал" компилятор. Ну и как практика при изучении ассемблера
1
|
Nighthome
|
|
03.09.2013, 19:16 | 32 |
как порядок байт влияет на результат побитовых операцый?
|
03.09.2013, 20:19 | 33 | |||||
Имхо, можно так:
1
|
03.09.2013, 20:19 | |
03.09.2013, 20:19 | |
Помогаю со студенческими работами здесь
33
Перекодировать из UCS-2 Little Endian в UTF Из UCS-2 Little Endian в UTF-8 без BOM Перегрузка ifstream и ofstream для работы с файлами в little-endian формате? Порядок байт в union Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |