在64位处理器中,一次处理64位数据。因此,当要执行任何算术运算时,都使用 ACCUMULATOR (也是64位)在 ALU 中完成。
但是int
的大小在大多数情况下超过2个字节。
如何实现2字节整数(算术运算)?
答案 0 :(得分:-1)
当然,基本思想是二进制数。但是,有许多细节使事情变得复杂。这取决于硬件和编译器。
我使用了在这里提到的每种方式表示整数的编译器。
表示事物的一种可能方法是使最大二进制整数成为可能。使用64位,并取回1的符号,您将得到2乘以64的幂减去1,或者稍微超过1.8 x 10 ^ 19。
如果要添加和减去,则可以。但是乘法很乏味,因为您需要为每个位做一个乘法。浮动协处理器可以为您提供帮助。
某些硬件将支持有趣的功能,因此利用它很有用。例如,某些CPU芯片将支持二进制编码的十进制。
https://en.wikipedia.org/wiki/Binary-coded_decimal
如果您足够大,可以记住Z80,它是我使用的第一个配备BCD的CPU。
https://en.wikipedia.org/wiki/Zilog_Z80
这意味着您只需要在4位级别上进行二进制填充,因为十进制数的每个数字都与其他数字分开设置。如果硬件直接支持它,则可以避免编写代码以在整数和十进制之间转换所有64位。效率不高。如果使用64位,然后将1删除,则只能获得15位数字。
加,减都很容易。乘法成为在二进制中实现逐位乘法的问题,然后将大于10的结果包含进位。
不同的硬件将以不同的方式支持事物。这里有一个大端与小端的问题。
https://chortle.ccsu.edu/AssemblyTutorial/Chapter-15/ass15_3.html
深奥的硬件上还有许多其他可能性。