从向我讲授的内容中,这意味着64位计算机将具有64位寄存器,但是如果是这样,一个人如何处理加密等需要128位键或要处理的更多或其他需要比处理器寄存器更高的操作可以处理?
阅读此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位最重要的位。
您也可以为其他操作执行此操作。诸如位操作,轮班等之类的东西很简单。乘法更难,划分/剩余的是bit子。我怎么知道?好吧,这是Java卡的32位计算的示例,Java卡是一个基本上假设16位操作的系统。由于Java不使用未签名的计算,因此更难编程。
有趣的是,Java卡本身通常在8位CPU上运行(尽管情况正在迅速变化)。因此,实际上,双重转换为8位至16位,而16位则进行了32位。8位处理器体系结构足够适当,是CPU在口袋计算器中使用的直接前身。自从黎明以前和之前都知道这种转换。