Я читаю uint16 от датчика, подключенного к малине (руке). Я конвертирую данные из маленького конца в большой конец через:Бит-операция ИЛИ с добавлением
// result = 0A 0B
// 0B 00 | 00 0A
(result << 8) | (result >> 8);
0A 0B 0B 0A впоследствии.
Но я также видел людей, использующих это:
(result << 8) + (result >> 8);
Есть ли какие-либо преимущества использования дополнения? Я предполагаю, что нет никакого преимущества, это немного медленнее.
Существует большая разница, когда речь идет о сумме двух чисел, например:
EF10 = 0FF0 + 00FF != 0FF0 | 00FF = 0FFF
Может быть, я ответил на мой собственный вопрос, но уже было бы неплохо, если бы кто-то мог оценить. Я бы не первый раз, когда я обманываю себя.
Вы только спрашиваете о преимуществе, а также о различии? Эта последняя часть на самом деле не кажется вопросом. – harold
Главным образом о преимуществе. Кажется, я знаю разницу, даже если я не могу объяснить это однозначно. Добавление должно использовать бит переноса для суммирования или просто сочетания. – aProgger
В общем, я бы использовал битовые операторы для битовых операций и использовал арифметические операторы для арифметических операций, даже если они иногда приравниваются, а современные чипы довольно эффективны с точки зрения циклов выполнения. – Pynchia