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

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

1
Patrik Nusszer 30 Май 2019 в 13:36

2 ответа

Лучший ответ

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

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

Обратите внимание, что другой термин для обозначения порядка байтов - это «порядок байтов». Порядок байтов в больших объектах.

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

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

1
user10762593user10762593 30 Май 2019 в 11:57

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

1
Krzysztof Cichocki 30 Май 2019 в 10:54