Little VS Big Endian

Тема в разделе "WASM.HEAP", создана пользователем _basmp_, 4 апр 2009.

  1. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    хотелось бы соображений по поводу достоинств и недостатков литтл и биг ендиан систем без привязки к существующим процессорам.
    что это:

    число == 0x87654321;

    будет храниться в памяти
    в литтл ендиан == 0x21 0x43 0x65 0x87
    в биг ендиан == 0x87 0x65 0x43 0x21

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

    недостатки
    -- не совсем удобно для визуального побайтового восприятия
    -- неудобно вычитать и делить большие числа
    -- не очень удобное преобразование ASCII строк в дворды (хотя это как сказать)
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Для компьютера безразницы.
    Но человек привык видить числа где старший бит слева.
     
  3. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    В сетях кстати принято big endian использовать. Чисто интуитивно наверно представляется так, что сначала мы получаем наиболее значащие цифры и уже можем выполнять предварительную обработку пока идет передача :)
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Pavia
    SashaTalakin
    так то оно так, да только это не для человеческого разглядывания. те вероятность того, что чел получит доступ к реальной памяти старательно сводится к 0.

    немного о
    разговор идет о системе с промежуточным представлением и докомпиляцией на платформе, причем платформ много. и бе и ле. представления целых в настоящее время приняты платформ-зависимые, что начинает создавать определенные неудобства, учитывая, что расчет идет на возможность связи, те совместимость по файлам/каналам.
    вот и возникла у меня мысль унифицировать форматы целых. отсюда и вопрос - какой формат потребует впоследствии меньше телодвижений компилятора/программы
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    А какая проблема поддерживать оба? Вроде в PowerPC даже бит есть, переключающий сие, хотя утверждать не буду.
     
  6. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    SII
    скажем пишем на ле инты или лонг-лонги в файл или в канал во вне. а читаем в бе. токо читаем толи инты, толи перевернутые инты.
    кроме того из этого рaстет еще одна фигня - нет простых способов ретипизовать массивы кроме char[] <--> byte[], приходится копировать побатно со сдвигами и прочим уродством. те, любить такой код затруднительно стает.
    можно конечно прибить контроль типов, но не хотелось бы.. или просто в ворнинги вывести и проверять только размер? но тогда все равно единый формат нужен..
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    для платформ с фиксированным размером операнда, (микроконтроллеры, etc), big endian действительно удобен.
    для платформ типа x86, где размер операнда может быть от 2^0 до 2^4 байт (и 10байт тоже), важно чтобы преобразование размера операнда происходило безболезненно, поэтому там little endian