Булевы операции и определения двоичного протокола в пределах ограничений типов данных в Arduino или C - PullRequest
0 голосов
/ 27 октября 2018

Я строю двоичный протокол для обработки n числа 10-битных значений аналогового входа. Я пытаюсь найти способ наилучшим образом согласовать серию 10-битных значений с типом данных, который облегчает выполнение логических операций. Например,

int main() {

    int array[] = {1024,343,512,256,223};
    char output[7];   

    for (int i = 0; i < 5; i++ ) {
        int addition = (array[i] << (10*1));
        output = output && addition;
    }

    for (int i = 0; i < 5; i++ ) {
        int printval = ((output >> (10*1)) && 0b1111111111);
        // this code is not working but should convey the idea with the intended output being the array elements in order.
        printf("Array %d: %d\n", i, printval);
    }
}

Если бы мне удалось установить размер переменной равным 7 байтам, как я сделал с выводом, которого достаточно для хранения 5-ти 10-битных типов данных и выполнения битового сдвига по отношению к замаскированным элементам массива, может сработать следующее ,

Проще говоря, у меня есть 5 переменных, в этом примере мы скажем, что они имеют длину 4 бита; 1101, 1011, 1111, 0010, 0001 и я хочу соединить их так, чтобы они сохранялись последовательно в массиве байтов / символов, поэтому в этом случае

array[0] = 11011011
array[1] = 11110010
array[2] = 00010000 

И написать средство для извлечения данных из n битов на основе его позиции (не элемента, а битовой позиции) в массиве, где каждая переменная данных, которая должна быть извлечена, равна 10 битам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...