У меня есть код в среде 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
Но у меня закончилась RAM около 200 (1600 логических значений), и я не знал, почему, пока не увидел это, хотя логические значения 1 бит, они хранятся в 8 биты данных.
Как я уже говорил, количество необходимых bool всегда увеличивается с шагом 8, поэтому я не знаю, может ли это сработать в мою пользу.
Есть ли более эффективный способ использования памяти для хранить более 1000 логических значений и по-прежнему иметь возможность ссылаться на них по индексу?
Или ... По крайней мере, с большей эффективностью памяти, которая не будет стоить значительно больше процессорного времени для установки и итерации?
Я подумал о массив char
, а затем побитовое маскирование каждого символа для доступа к отдельным битам. Но я не знал, есть ли более простой способ, или это займет значительно больше процессорного времени.