根据我的经验,对我来说,这意味着一台64位计算机将具有一个64位寄存器,但是如果是这样,一个人如何处理需要等128位密钥或更多密钥才能进行的加密等操作,或者其他一些需要比处理器寄存器能够处理的位数更高的操作?
答案 0 :(得分:1)
阅读此Q/A,了解如何处理任意大小(无符号)的整数。
但是,对于大小的2到4倍,更可能具有更简单的组合。例如,对于128位(模块化)加法Z = X + Y (mod 2^128)
:
lowZ = lowX + lowY (mod 2 ^ 64)
; lowC = lowZ < lowX ? 1 : 0
(换句话说:如果进位额不是直接可用的,则需要计算); hiZ = hiX + hiY + lowC
(mod 2 ^ 64); hiC = hiZ < hiX ? 1 : 0
(但通常只是将进位舍弃)。 lowX
,lowY
和lowZ
只是值X
,Y
和Z
的64个最低有效位。那么hiX
,hiY
和hiZ
只是值X
,Y
和Z
的64个最高有效位。
您也可以对其他操作执行此操作。位操作,移位等操作非常简单。乘法更难,除法/余数是母狗。我怎么知道?好吧,here is an example of 32 bit calculations for Java Card, a system that basically assumes 16 bit operations。因为Java不使用无符号计算,所以这样的编程比较难。
很有趣,Java Card本身通常在8位CPU上运行(尽管这种情况正在迅速改变)。因此,实际上,正在进行8位到16位和16位到32位的双重转换。 8位处理器体系结构足够合适,是袖珍计算器中使用的CPU的直接前身。自从IT诞生之初甚至可能更早就知道这种转换。