Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/246: Рейтинг темы: голосов - 246, средняя оценка - 4.54
 Аватар для stawerfar
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1

Порядок байт в big-endian и little-endian

13.06.2013, 11:29. Показов 48843. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Народ подскажите мне пожалуйста простые прописные истины, а то я что то запутался!
Предположим что у нас в байте 8 - бит и где число 5 будет иметь вид 101.
Как будет выглядеть число 5 в 2-х байтах памяти в big-endian и little-endian.

0000 0000 0000 0101 - big-endian ?
0000 0101 0000 0000 - little-endian ?
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2013, 11:29
Ответы с готовыми решениями:

Как объединить пару байт в слово? (Загрузка WAV, Big Endian)
Привет! Есть звуковой файл с 16-и битными амплитудами. Да не суть. После открытия файла и чтения всяких заголовков, остаются чистые RAW...

Из little endian в big endian
Есть 256-битное 16-ричное число: 54 68 69 73 20 69 73 20 6D 65 73 73 61 67 65 2C 20 6C 65 6E 67 74 68 3D 33 32 20 62 79 74 65 73 Как...

Big-endian тестирование
Есть программа, которая должна работать на little и big endian одинаково. В ней куча всяких "ifdef". С помощью какого ПО для...

32
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.06.2013, 22:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от stawerfar Посмотреть сообщение
Про какой барьер компилятора вы говорите? И как его применять?
Компилятор может в процессе оптимизации сгенерировать такой машинный код, что
он будет лишь очень отдаленно напоминать оригинал: переменные могут быть перемешаны,
помещены в регистры, и т.д. Кое-что вообще будет выкинуто за борт.
В данном примере
Цитата Сообщение от stawerfar Посмотреть сообщение
C++
1
2
int sizebyte = sizeof(val);
int sizebit = sizebyte * 8;
вы не можете быть наверняка уверенным, что переменная sizebyte располагается в
памяти до sizebit, ровно как и наоборот. Точно также нельзя быть уверенным в том,
что присваивание sizebyte выполняется до присваивания sizebit. Например, попробуйте
сделать sizebyte и sizebit глобальными - вполне возможно, что вывод программы будет
другим. Так что этот код некорректен. Для контроля над подобными вещами существуют
барьеры компилятора, в Visual C++, например, это _ReadWriteBarrier и volatile.
Хотя они предназначены в основном для многопоточного кода, а не для таких примеров.
1
 Аватар для stawerfar
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
14.06.2013, 22:43  [ТС]
А смысл был определить нумерацию адресов на данной машине. То есть сначала или с конца идет нумерация адресов в памяти.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
14.06.2013, 22:44
Цитата Сообщение от stawerfar Посмотреть сообщение
Да я согласен нужно было использовать например
char buff[2];
if (&buff[0] < &buff[1])
А это выражение всегда истинно. Тогда как предыдущее непредсказуемо.
1
 Аватар для stawerfar
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
14.06.2013, 22:48  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
А это выражение всегда истинно. Тогда как предыдущее непредсказуемо.
? Можно поподробнее?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
14.06.2013, 22:49
Цитата Сообщение от stawerfar Посмотреть сообщение
То есть сначала или с конца идет нумерация адресов в памяти.
Нумерация всегда идёт с начала, с какой бы стороны это начало не находилось

Добавлено через 1 минуту
Цитата Сообщение от stawerfar Посмотреть сообщение
? Можно поподробнее?
А что подробнее? Элемент массива с индексом 1 всегда имеет адрес больше, чем элемент с индексом 0. Всё.
2
 Аватар для stawerfar
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
14.06.2013, 22:49  [ТС]
А как тогда проверить машинное представление нумерации адресного пространства?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
14.06.2013, 22:51
А какой от этого толк?
2
 Аватар для stawerfar
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
14.06.2013, 22:54  [ТС]
Это другой вопрос уже?

Добавлено через 2 минуты
Дело не в толке а в самой сути, я думаю что понимание этого и "ощупывание" расширит мой кругозор в computer science.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
14.06.2013, 23:04
Ну мне просто не очень понятно значение фразы "машинное представление нумерации адресного пространства".
Ну вот, допустим, есть физические адреса, которые выставляются на шине адреса, есть виртуальные адреса, с которыми работает наша программа на C/C++. Что из того, что между этими адресами может не быть ничего общего? Для программы достаточно, что адреса могут принимать только определённые значения и в массивах эти адреса возрастают от элемента к элементу. Что ещё можно узнать изнутри? По-моему ничего. Может я ошибаюсь...
1
 Аватар для stawerfar
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
14.06.2013, 23:08  [ТС]
Я понял нужно мне наверное переходить на изучение какого нибудь ассемблера и книжку про компиляторы почитать.
Что бы такие тонкости хорошо понимать. Всем спасибо.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
14.06.2013, 23:11
Цитата Сообщение от stawerfar Посмотреть сообщение
Я понял нужно мне наверное переходить на изучение какого нибудь ассемблера и книжку про компиляторы почитать.
Кстати, компиляторы обычно имеют ключи, позволяющие сохранить результат трансляции в виде программы на ассемблере. Visual C и GCC точно умеют (да вроде все что видел умели).
Иногда полезно посмотреть, что же "нагенерировал" компилятор. Ну и как практика при изучении ассемблера
1
Nighthome
03.09.2013, 19:16
как порядок байт влияет на результат побитовых операцый?
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
03.09.2013, 20:19
Имхо, можно так:
C++
1
2
3
4
5
6
    int i=1;
    char *pc=(char*)&i;
    if (pc[0]>pc[1]) 
        cout<<"little-endian";
    else
        cout<<"big-endian";
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2013, 20:19
Помогаю со студенческими работами здесь

Как проще всего работать с Big-Endian C++ ?
С++. Как проще всего работать с Big-Endian, используя стандартные операции ?

Перекодировать из UCS-2 Little Endian в UTF
Есть много файлов *.txt в кодировке (как я понял) UCS-2 Little Endian. Как перевести эти файлы в кодировку UTF или ANSI? Пока что делаю это...

Из UCS-2 Little Endian в UTF-8 без BOM
Здравствуйте! Имеется файлик xml в кодировке UCS-2 Little Endian. Хочу написать обработчик на с++ который будет менять кодировку на...

Перегрузка ifstream и ofstream для работы с файлами в little-endian формате?
Всем привет, мне нужно реализовать классы для работы с файлами в little-endian формате. Для этого задумал сделать public-потомки...

Порядок байт в union
#include &lt;iostream&gt; using namespace std; void disp_binary(unsigned u); union swap_bytes { short int num; char ch; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru