У меня есть некоторый код, который у меня есть в среде Arduino, который требует x (с шагом 8) логических значений, которыми можно манипулировать во время выполнения для некоторого кода регистра сдвига.Поэтому в настоящее время я использую логический массив, например, так:
#define number_of_shiftRegisters 220 //num of 8 bit shift registers
#define numOfRegisterPins number_of_shiftRegisters * 8 //number of booleans needed
boolean registers[numOfRegisterPins]; //boolean array
Но у меня не хватило ОЗУ около 200 (1600 логических значений), и я не знал, почему, пока не увидел, хотя логические значения 1 битони хранятся в 8 битах данных.
Как я уже говорил, количество необходимых булев всегда увеличивается с шагом 8, поэтому я не знаю, может ли это сработать в мою пользу.
Есть ли более эффективный способ хранения более 1000 логических значений и возможность ссылаться на них по индексу?
Или ... По крайней мере, более эффективное использование памяти, которое не будет стоить значительно больше процессорного времениустановить и выполнить итерацию?
Я думал о массиве char
, а затем о битовой маскировке каждого символа для доступа к отдельным битам.Но я не знал, есть ли более простой способ, или это займет значительно больше процессорного времени.