i'm currently programming in c for an 8-bit microcontroller from atmel (Atmega328). In the program, i've got an 8-bit array storing thousands of 2 bit integers and it is therefore located in the program memory space. Currently, I put four 2-bit integers in each byte, but now when I think of it more closely, it seems stupid...
Would it not be more efficient to use an array with 16-bit values and store eight 2-bit variables in each location?
The microcontroller (atmega328p) is an 8-bit IC with 16 bits for each machine instruction.