c - 数组打包效率 : 8bit (byte) vs 16bit elements?

标签 c memory avr 8-bit

我目前正在用 c 语言为 atmel (Atmega328) 的 8 位微 Controller 编程。在程序中,我有一个 8 位数组存储了数千个 2 位整数,因此它位于程序内存空间中。目前,我在每个字节中放了四个 2 位整数,但现在仔细想想,这似乎很愚蠢......

使用具有 16 位值的数组并在每个位置存储八个 2 位变量不是更有效吗?

微 Controller (atmega328p) 是一个 8 位 IC,每个机器指令有 16 位。

最佳答案

如何提高效率?

空间效率

2 位整数占用 2 位。您对此无能为力。

时间效率

无论您如何打包它们,您仍然需要执行相同数量的按位运算以从较大的值中提取您的 2 位数字。

关于c - 数组打包效率 : 8bit (byte) vs 16bit elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714436/

相关文章:

python - 在 exe 中使用从 DLL 导出的 Python 对象

c++ - 删除类内的动态分配数组

iphone - iPhone内存崩溃:信号0

c - 如何将项目动态添加到动态数组

javascript - CallCC 是 goto 的改进版本吗?

c++ - ffmpeg - 比较 2 个 AVFrames 数据

c++ - 为什么连续调用 new[] 不分配连续内存?

embedded - 学习嵌入式编程的最佳平台?

c - 需要计时器方面的帮助

c - 有没有办法将多个值作为 C 中定义的单个宏值传递给宏函数?