Наиболее значимый бит - PullRequest
       9

Наиболее значимый бит

0 голосов
/ 08 октября 2009

Я давно не занимался программированием на аппаратных устройствах и забыл почти все основы.

У меня есть спецификация того, что я должен отправить в байте, и каждый бит определяется от старшего значащего бита (бит 7) до наименее значимого (бит 0). Как мне построить этот байт? От MSB к LSB или наоборот?

Ответы [ 3 ]

5 голосов
/ 08 октября 2009

Если эти биты «упакованы» (что обычно и есть), то порядок битов - это собственный порядок, 0 - младший бит, а 7 - старший бит. Биты обычно отправляются не по одному, а в виде байтов (обычно более одного байта ...).

Согласно википедии , порядок следования битов может быть от 7 до 0, но это, вероятно, редкий случай.

2 голосов
/ 08 октября 2009

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

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

Чтобы просто собрать байт из восьми бит, просто используйте побитовое ИЛИ для «добавления» битов, по одному за раз:

byte value = 0;

value |= (1 << n);  // 'n' is the index, with 0 as the LSB, of the bit to set.
1 голос
/ 08 октября 2009

Если в спецификации написано MSB, то создайте MSB. В противном случае, если в спецификации написано LSB, создайте его LSB. В противном случае запросите дополнительную информацию.

...