那些大小不是2的幂的整数有意义吗?

时间:2013-03-04 09:11:40

标签: variables avr 8-bit

这是一个8位架构,字长为16位。我现在需要使用48位整数变量。我的理解是libm实现了8,16,32,64位操作(加法,乘法,有符号和无符号)。

因此,为了进行计算,我必须将值存储在64位有符号或无符号整数中。正确的吗?

如果是这样,有什么可以防止使用一般例程?例如,添加:

  1. 从两个变量的LSB开始
  2. 添加它们
  3. 如果有更多字节可用,则继续转到
  4. 将两个变量向右移1个字节
  5. 转到1)

2 个答案:

答案 0 :(得分:3)

libm实现标准大小类型的例程,编译器选择正确的用于表达的例程。

如果您想实现自己的类型,可以。如果你想使用通常的操作符,那么你必须进入编译过程以让编译器选择你的。

您可以将操作实现为函数,比如add(int48_t, int48_t),但编译器将无法进行常量折叠等优化。

所以,没有什么可以阻止你实现自己的自定义编译器,但是它真的有必要吗?你真的需要保存这个空间吗?如果是这样,那就去吧!

答案 1 :(得分:2)

这是正确的,保存几个位(几乎在所有情况下)都不值得实现自己的逻辑。

相关问题