Порядок чтения потока битов - PullRequest
2 голосов
/ 08 апреля 2011

Я прочитал в руководстве:

Для доставки, ориентированной на биты, битовый порядок для формата байтового потока задан так, чтобы начинаться с MSB первого байта, перейдите к LSB изпервый байт, затем MSB, второй байт и т. д.

В моем приложении мне приходится иметь дело с битами.(например, у меня есть десятичное число 5, в двоичном формате это выглядит как 00000101). Значит, это означает (согласно руководству), что порядок считываемых битов равен

<= 0 <= 0 <= 0 <= 0 <= 0 <= 1 <= 0 <= 1 (first read bit I read is 0, second is 0 etc....)

, или это означает, что порядок чтениябиты:

<= 1 <= 0 <= 1 <= 0 <= 0 <= 0 <= 0 <= 0 (first read bit I read is 1, second is 0 etc....)

Спасибо

Ответы [ 4 ]

2 голосов
/ 08 апреля 2011
  • MSB: старший значащий бит
  • LSB: младший значащий бит

Таким образом, для 5 (0000_0101) бит слева (представляющий 2 7 ) является "наиболее значимым", а бит справа (представляющий 2 0 ) является " наименее значимый ". Поэтому да, ожидайте, что 0 будет первым битом.

1 голос
/ 08 апреля 2011

Порядок байтов в основном называется порядком байтов. У вас есть системы с прямым порядком байтов и системы с прямым порядком байтов.

С прямым порядком байтов у вас сначала самый старший бит, а в младшем - младший - первый.

Большая часть сетевого трафика имеет обратный порядок байтов. Машина X86 всегда имеет младший порядок.

Здесь больше информации о endian-ness

1 голос
/ 08 апреля 2011

Если первые байты в вашем потоке 0x7D,0x01, то поток битов начинается 0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1.

1 голос
/ 08 апреля 2011

В Java методы по умолчанию для чтения и записи потоков байтов будут автоматически по умолчанию использовать сетевой порядок байтов, так что вы, вероятно, готовы к работе.

...