巨大数的运算 (前篇 ??对于整数) # 万进制 # ?????? 开开开山怪

发布于:2021-10-21 03:09:03

巨大数运算的基础:微易码补码


巨大数运算目的是为了解决数据范围大于数据类型能表示的范围之内的现象,例如 int (2^31)表示的数据范围在21亿, unsigned int (无符号位 2 ^32 ) 表示的数据范围在42亿范围之内,那么巨大数的目的就是解决这个数据超出能表达范围的现象。
对于用户输入的一串数字,我们不在采用数据类型去接收它(上边说了,可能会超出数据类型所能表示的范围),而采用字符串去做接收。
万进制(个人理解):其实万进制和我们*常所见的十进制,二进制,八进制……是一个概念,十进制的进率是10,满10 向上进一位,二进制是进率是2,那万进制的进率就是10000,满10000向上进一位,万进制可以将十进制的四位捆绑看做是一位,那这一位最大的值只能是9999 ,类比来说十进制的每一位最大值只能9,二进制每一位最大只能是1,八进制每一位最大只能是7。
补码:补码的引出就是为了使减法运算变为加法运算,a - b = a + (- b)
微易码补码:
1.具有补码的性质,根据常规0代表正数,1代表负数
2.对于两个数字进行相加减,正数前面补0000 ,负数前面补9999,数据长度补齐,正数采用本身相加,负数采用它的补码(9999 + 负数)进行相加。
3.对于运算结果的符号表示为:第一个运算数正负 ^ 第二个运算数正负 ^ 两个运算数运算的最后一次进位
4.若运算结果的符号为0(即正数),则最后的运算结果是加上进位得到最后的运算结果。
5.若运算结果的符号为1(即负数),则最后的运算结果加上进位再用9999减去得到最终的结果


下面的例子采用简单数据来进行说明,巨大数只是位数更多与其本质相同,涵盖各种情况的加减法:





相关推荐

最新更新

猜你喜欢