我在 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 位数据中。
正如我之前所说,所需的布尔数总是以 8 为增量,所以我不知道这是否对我有利。
是否有更高效的内存方式来存储 1000 多个布尔值并且仍然能够通过索引引用它们?
或者......至少更高效的内存不会花费更多的CPU时间来设置和迭代?
我曾考虑过一个char
数组,然后对每个字符进行位掩码以访问各个位。但我不知道是否有更简单的方法,或者这是否会占用更多的 CPU 时间。