Как один байт может быть более значимым, чем другой? - PullRequest
0 голосов
/ 09 июня 2018

Разница между прямым и прямым порядком байтов объясняется мне так: «В младшем порядке младший байт переходит в младший адрес, а в старшем порядке старший байт переходит в младший адрес».Что именно делает один байт более значимым, чем другой?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

В любой позиционной числовой системе каждая цифра имеет различный вес при создании общего значения числа.

Рассмотрим число 51354 (в базе 10): первые 5 более значительны , чем вторые 5, так как они означают 5 , умноженные на 10000 , тогда каксекунда 5 - это всего 5 , умноженная на 10 .

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


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

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

Давайте рассмотрим пример: возьмем значение 54321 как 16-битное целое число.Если вы напишите это в базе 256, это будут две цифры из 256 базовых: цифра 0xD4 1 (которая стоит 0xD4, умноженная на 256) и цифра 0x31 (которая стоит 0x31, умноженная на 1),Понятно, что первый более значим, чем второй, так как действительно левая «цифра» стоит в 256 раз больше, чем справа.

Теперь машины с прямым порядком байтов вначале запишут в память наименее значимые цифры, а с порядковыми номерами обратного порядка.

Кстати, между двоичным, шестнадцатеричным и base-256 есть хорошая связь:4 бита отображаются прямо в шестнадцатеричное число, а 2 шестнадцатеричных числа отображаются прямо в байт.По этой причине вы также можете видеть, что 54321 в двоичном виде

1101010000110001 = 0xD431

может быть разбито на две группы по 8 бит

11010100 00110001

, которые являются 0xD4 и 0x31 выше.Таким образом, вы также можете видеть, что самый старший байт - это тот, который содержит старшие биты.


  1. Здесь я использую соответствующие шестнадцатеричные значения для представления каждой базовой цифры 256,поскольку нет хорошего способа представить их символически.Я мог бы использовать их символьное значение ASCII, но у меня 0xD4 находится вне ASCII, а 0x31 - 1, что только добавило бы путаницу.
0 голосов
/ 09 июня 2018

В числе 222 вы можете считать первые 2 наиболее значимыми, поскольку они представляют значение 200;второе 2 является менее значимым, поскольку оно представляет значение 20;а третья цифра 2 является наименее значимой цифрой, поскольку она представляет значение 2.

Итак, хотя цифры одинаковы, величина числа, которое они представляют, используется для определения значимости цифры.

Это то же самое, что и при округлении значения до ряда значащих цифр («SF» или «SF»): от 123,321 до 3SF - это 123, до 2SF - 120, до 4SF - 123,3.Эта терминология использовалась еще до изобретения электроники.

...