大家可以根据数字的大小动态分配内存,位数不够了就再往上加。就好比大家从小学的加法从来没有限制过操作数的大小。纸有多长就能写多长。
只是这么做大家就不能享受机器语言中由硬件对整个整数所有32个位批量处理并且解决进位的待遇了。大家必须手动迭代,管理进位。
打个最直观但低效的例子。大家可以使用链表,将二进制数的低数位放在列表头方向,进行比如加法运算时同时迭代两个操作数的链表,按位相加,再加上上一位的进位,如此构造结果。这甚至是可以单纯靠布尔逻辑而不依赖硬件加法实现
当然,大家没有必要完全舍弃硬件带来的”批处理”功能。而且事实上,硬件中的”行波进位加法器”就是通过上面描述的原理实现的。只是行波进位加法器使用定长数组罢了。那么,大家可以在数组或者链表中,以硬件一批次能处理的大小存储大整数,用硬件实现的加法完成组内进位。而硬件加法产生溢出时通过比如在某一特殊寄存器中立下的flag告诉大家是否应该往下一组数位中输入进位。
如果是浮点数的话就用科学计数法吧。”浮点”这个叫法的来源就是这个。