Младший бит (наименее значимый бит) является бит, значение которого равно 1 (2^0) и старший бит равен бит, значение которого представляет собой 2^(N-1), где n - количество бит в регистре. В общем случае, когда выписано в двоичном формате, MSB - самый левый бит, а младший бит - самый правый бит. Чаще всего LSB отображается как бит 0 в документации по аппаратным средствам, хотя я знаю одну компанию, которая меняет нумерацию бит, чтобы номер MSB был пронумерован.
<<
- это оператор сдвига С, смещающий бит от LSB и к MSB. Поэтому 7<<3
представляет 111000
в двоичном формате.
|
является оператором бит-бит ИЛИ. Это используется для объединения значений, когда результирующие биты являются единичными, если один из соответствующих входных битов один.
Глядя на исходное значение 3 << 0 | 7 << 3 | 1 << 6 | 0 << 7 | 1 << 7 | 0 << 8 | 0 << 10 | 0 << 11| 0 << 12 | 0 << 13 | 0 << 14
0000 0000 0000 0011
3<<0
из
0000 0000 0011 1000
из 7<<3
0000 0000 0100 0000
из 1<<6
0000 0000 0000 0000
из 0<<7
и т. Д.
Этот тип конструкции обычно используется для описания значения, поступающего в регистр с отдельными полями регистра.
Прочтите учебник о битовых операциях. Вероятно, есть и другие недостающие сведения. Бесполезно спрашивать об одной проблеме, так как вряд ли вы получите последовательную картину об этом поле. Если вы используете C, прочитайте книгу. Лучшие из них также относятся к битовым операциям относительно C. Для '' '' и '<<', обратите внимание, что они не одинаковы для каждого языка. Особенно операторы смены могут вести себя не так, как вы на самом деле ожидаете - особенно в правильной смене. – Olaf