Читает ли Java один байт с прямым порядком байтов? - PullRequest
0 голосов
/ 30 мая 2019

Таким образом, мы можем говорить о порядке байтов и порядка байтов. Например, когда я читаю следующий байт из FileInputStream, я практически получаю 8-разрядное целое число со знаком, но я понятия не имею, каков порядок битов, с помощью которого Java вычисляет целочисленное значение байта. Что стоит первым, самый значимый или наименее значимый бит?

(знаковый бит, 2 ^ 6 ..... 2 ^ 0) Или же... (2 ^ 0, ..... 2 ^ 6, бит знака)

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Endianness действительно применяется только тогда, когда юнит разбит на другие юниты.Таким образом, если вы передаете байт через поток битов, вы можете наблюдать, был ли младший значащий бит передан первым или последним.И в этот момент мы могли бы сказать, что поток был с прямым порядком байтов или с прямым порядком байтов.

Но внутри машины с байтовой адресацией, т. Е. Там, где байт является наименьшей единицей хранения, нет никакого порядка байтов"внутри байта.Ни один бит байта не является "перед" любым другим битом байта.

Обратите внимание, что другим термином для порядка байтов является "порядок байтов".Порядок байтов в более крупных объектах.

Это правда, что нам нравится нумеровать биты (от 0 до 7, для 8-битного байта), поэтому мы можем говорить о них, но это действительно не определяет порядок байтов, дажехотя нумерация часто выбирается в соответствии с порядком байтов машины;это соглашение.

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

0 голосов
/ 30 мая 2019

in int первый бит - знак, остальное - значение, последний бит - младший бит.

...