Я сейчас читаю «Компьютерные системы: взгляд программиста». В книге используется big-endian (сначала наиболее значимые биты). В контексте чисел с плавающей запятой IEEE, использующих 32-битную одинарную точность, здесь приводится пример преобразования между целым числом и плавающей запятой IEEE:
Одним из полезных упражнений для понимания представлений с плавающей запятой является преобразовать примерные целочисленные значения в форму с плавающей точкой. Например, на рисунке 2.15 мы видели, что 12,345 имеет двоичное представление [11000000111001]. Мы создаем нормализованное представление этого, сдвигая 13 позиций вправо от двоичной точки, давая 12,345 = 1,10000001110012 × 2 ^ 13. Чтобы закодировать это в формате IEEE с одинарной точностью, мы создаем поле дроби, отбрасывая ведущий 1 и добавляя 10 нулей в конец, давая двоичное представление [10000001110010000000000]. Чтобы построить поле экспоненты, мы добавляем смещение 127 к 13, давая 140, которое имеет двоичное представление [10001100]. Мы комбинируем это со знаковым битом 0, чтобы получить представление с плавающей запятой в двоичном виде [01000110010000001110010000000000].
Что я не понимаю, так это «отбросить ведущий 1 и добавить 10 нулей к конец, давая двоичное представление [10000001110010000000000]. " Если используется big-endian, почему вы можете добавить 10 нулей к концу 1000000111001? Разве это не приводит к другому значению, чем после двоичной точки? Для меня будет иметь смысл, если мы добавим 10 нулей впереди, поскольку окончательное десятичное значение будет таким же, как и после двоичной точки.
Почему / как вы можете добавить 10 нулей к обороту, не меняя значения, если используется big-endian?