хотелось бы соображений по поводу достоинств и недостатков литтл и биг ендиан систем без привязки к существующим процессорам. что это: число == 0x87654321; будет храниться в памяти в литтл ендиан == 0x21 0x43 0x65 0x87 в биг ендиан == 0x87 0x65 0x43 0x21 пример достоинств и недостатков для литтл ендиан системы достоинства -- мы более просто можем получить доступ к младшим составляющим числа и как следствие -- упрощаются операции преобразования типов, операции сложения и умножения больших чисел. -- большие числа записываются логичным образом (более старший байт по более старшему адресу) недостатки -- не совсем удобно для визуального побайтового восприятия -- неудобно вычитать и делить большие числа -- не очень удобное преобразование ASCII строк в дворды (хотя это как сказать)
В сетях кстати принято big endian использовать. Чисто интуитивно наверно представляется так, что сначала мы получаем наиболее значащие цифры и уже можем выполнять предварительную обработку пока идет передача
Pavia SashaTalakin так то оно так, да только это не для человеческого разглядывания. те вероятность того, что чел получит доступ к реальной памяти старательно сводится к 0. немного о разговор идет о системе с промежуточным представлением и докомпиляцией на платформе, причем платформ много. и бе и ле. представления целых в настоящее время приняты платформ-зависимые, что начинает создавать определенные неудобства, учитывая, что расчет идет на возможность связи, те совместимость по файлам/каналам. вот и возникла у меня мысль унифицировать форматы целых. отсюда и вопрос - какой формат потребует впоследствии меньше телодвижений компилятора/программы
А какая проблема поддерживать оба? Вроде в PowerPC даже бит есть, переключающий сие, хотя утверждать не буду.
SII скажем пишем на ле инты или лонг-лонги в файл или в канал во вне. а читаем в бе. токо читаем толи инты, толи перевернутые инты. кроме того из этого рaстет еще одна фигня - нет простых способов ретипизовать массивы кроме char[] <--> byte[], приходится копировать побатно со сдвигами и прочим уродством. те, любить такой код затруднительно стает. можно конечно прибить контроль типов, но не хотелось бы.. или просто в ворнинги вывести и проверять только размер? но тогда все равно единый формат нужен..
для платформ с фиксированным размером операнда, (микроконтроллеры, etc), big endian действительно удобен. для платформ типа x86, где размер операнда может быть от 2^0 до 2^4 байт (и 10байт тоже), важно чтобы преобразование размера операнда происходило безболезненно, поэтому там little endian