这是一个8位体系结构,字大小为16位。我现在需要使用一个48位整型变量。我的理解是,libm实现8,16,32,64位操作(加法,乘法,有符号和无符号)。整数的大小不是2的幂,是否有意义?
所以为了进行计算,我必须将该值存储在64位有符号或无符号整数中。正确?
如果是这样,那么有什么来防止使用一般例程?例如,对于另外:
- 开始与LSB两个变量的
- 把它们加起来
- 如果有更多的字节是可用的继续,otherways转到准备
- 移两个变量1个字节向右
- 转到1)
这是一个8位体系结构,字大小为16位。我现在需要使用一个48位整型变量。我的理解是,libm实现8,16,32,64位操作(加法,乘法,有符号和无符号)。整数的大小不是2的幂,是否有意义?
所以为了进行计算,我必须将该值存储在64位有符号或无符号整数中。正确?
如果是这样,那么有什么来防止使用一般例程?例如,对于另外:
libm实现了标准大小类型的例程,编译器选择正确的用于表达式。
如果你想实现你自己的类型,你可以。如果你想使用通常的操作符,那么你必须进入编译过程来让编译器选择你的。
您可以实现操作的功能,说add(int48_t, int48_t)
,但随后的编译器将不能够做到优化,例如常量折叠等
所以,没有什么距离实现自己的自定义编译器阻止你,但它真的有必要吗?你真的需要保存这个空间吗?如果是这样,那就去吧!
这就是我想说的,更好.. :-) – 2013-03-05 08:40:18
这是正确的,保存几位(几乎所有情况下)都不值得实现自己的逻辑的麻烦。
什么是防止一般数学例程的写作,就像学生在学校教授一样,即{从两个变量的LSB开始;加起来;如果有更多的字节可用,请记住进位并执行相同的操作。} – Vorac 2013-03-04 09:50:20
对CPU中整个字的操作在1个时钟周期内完成,如果您想逐位进行操作,那么您可以轻松地花费50倍时间做计算:-) – 2013-03-04 10:02:52
基本上,CPU [指令集](http://en.wikipedia.org/wiki/Instruction_set)对单词 – 2013-03-04 10:06:56
1是一个很不错的整数...可以说是最好的一个! – 2013-03-04 09:12:55