相关文章
巨量算数 请求加密算法爬虫 巨量算数具体怎么使用
2024-11-10 17:01

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用

巨大数的简单运算

**

目前计算机对于数据长度的处理是存在一定限度的,用与计算处理各种数据。例如C语言提供了许多整数类型(int,short,long), 一般情况使用int类型即可,但是要完成特殊的功能数据的长度就不得不超出C语言的处理范围,这时就需要使用另外的方法对这些数据进行处理,虽然float类型(可表示的数据范围是-2^218 ~ 2^218)和double类型(可表示的数据范围- 2^1024 ~ 2^1024)也可以使用,但是float的有效位数只有7位,double类型的有效位数也只有15位,处理数据不够精确,数据的位数越多,丢失的信息量也越大。因此我们提供一种对位数超出表示范围的数据的处理工具——也就是这个巨大数的处理工具。

1、万进制

万进制,顾名思义,就是逢万进一,和二进制十进制的原理是一样的(二进制逢二进一,十进制逢十进一)。

优点:1、当巨大数用字符串输入后,会使用字符型数组来存储它,也就是说将巨大数中的每一位数字视作一个字符存储进数组,每个字节存储一个数字字符;若是使用万进制的话,每次将巨大数的4位存储到int类型的四个字节中,int数组中的每个元素取值为0~9999,和使用字符串的效率相同,并且已经将字符存储成了数据,方便了以后的计算。

2、之所以使用万进制,而不用更高的进制位,是因为在涉及乘法的计算中依然要使单次计算的数据结果保持在int类型可以表示的范围(-2147483648 ~ 2147483647)之内(例:若使用十万进制,当出现99999×99999 = 9999800001,但是很明显9999800001已经超出了int类型的表示范围),若使用千进制,则不能发挥计算机强大的计算能力,因此万进制是最合适的进位。在进行加法运算时,对应位置进行加和之后都会有进位的可能,为保证所有数据都不遗失,则必须设置进位的问题:carry(进位) = result / 10000,count(本位) = result % 10000.(这也可以用到其他进制当中,例如为二进制时,进位就是结果除以2,本位就是结果取余2)。

2、微易码补码

在巨大数处理过程中,为了避免对负数操作过程中引起的复杂运算,引用到微易码补码,与补码的原理相似(补码表示法规定:正数的补码与其原码相同;负数的补码是在原码的基础上,除符号位外按位取反,末尾加一),而对于微易码补码,同样是除符号位外,将负数的每一位与9取反。

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_进制

注意:巨大数所申请的int数组长度 = (巨大数字符的长度 + 3)/ 4; 例如:巨大数123456789; count =(9 + 3)/ 4;

1、加法运算

加法分为有进位和无进位两种情况,有进位又有一种特殊情况:进位饱和。

我们来一步一步分析。

无进位:

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_补码_02

无进位是最简单的一种,那么结果的正负号怎么确定呢,答案是是用两个数的本身符号与进位的异或运算。例如.357-54,sign = 0 ^ 1 ^ 1 = 0。有进位:

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_数据_03

在这里,我们发现有进位的时结果与正确结果差1,所以我们在有进位时,将进位加到最后的结果上,就得到了正确答案。如果是无进位的情况,进位为0,也是正确的。所以在结果后面加上进位,就是最终的正确结果。我们再来看下面一种特殊情况:

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_巨量算数 请求加密算法爬虫_04

这种情况结果就发生了很大的错误,并不是简单修正就能解决,我们来看看它为什么会发生这样的问题。我们发现在运算时进位发生了溢出,本来是数值结果的进位被溢出当成了符号位去进行结果符号位的判断,数值结果也就出现了极大的问题。所以,我们在本来的运算数上多加一个辅助位,目的就是为了存放溢出的数值结果。即我们在正数前补0000,负数前补9999,这样就有效的解决了这个问题。

正确的结果如下:

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_巨量算数 请求加密算法爬虫_05

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_数据_06

加法的代码如下:

2、减法运算

减法运算就是加法运算的逆运算,只需将其中一个数变为相反数,再调用加法函数即可。 代码如下:

注意代码中,改变了hn2->sign的符号并计算完成后,再把符号变成了原本自身的符号,这样可以防止接下来的减法运算里,产生符号的问题。

3、乘法运算

一般的乘法过程:

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_数据_07

巨大数的乘法过程:

巨量算数 请求加密算法爬虫 巨量算数具体怎么使用_巨量算数 请求加密算法爬虫_08

普通乘法每次乘一位,所以错位相加一位。

巨大数每次乘四位,所以错位相加四位。

乘法的代码如下:

4、除法运算

关于除法运算,目前的微易码补码还没有给出解决方案,还没能实现。

    以上就是本篇文章【巨量算数 请求加密算法爬虫 巨量算数具体怎么使用】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/news/1270.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://sjzytwl.xhstdz.com/mobile/ , 查看更多   
最新文章
3防手机(3防手机8849)
  关于《三防手机》的文章  随着科技的不断发展,智能手机已经成为我们日常生活中不可或缺的一部分。然而,我们的手机在使用
华为手机有放大镜望远镜的功能吗 华为手机放大镜望远镜功能介绍【详解】手机望远镜「华为手机有放大镜望远镜的功能吗 华为手机放大镜望远镜功能介绍【详解】」
  有放大镜望远镜的功能吗,很多朋友都遇到了这样的问题。这个问题该如何解决呢?下面小编就带来华为放大镜望远镜的功能介绍,
4glte是什么手机(4g lte+)
  关于《4GLTE是什么手机》的文章  在现代社会,移动通信技术日新月异,其中,4GLTE技术已成为众多智能手机所广泛采用的一种
工行短信银行工商银行手机银行app下载「工行短信银行」
工行短信银行app是一款工行移动金融创新产品的手机客户端。工行短信银行客户端为你提供实时查询、业务办理等等,方便快捷,快来I
怎么办理手机银行手机银行「怎么办理手机银行」
随着移动互联网的飞速发展,手机银行已成为我们日常生活中不可或缺的一部分,它提供了便捷、高效的金融服务。那么,如何办理手机
手机管家手机管家「手机管家」
手机管家是一款综合性的手机管理软件,旨在为用户提供一站式的手机优化服务。通过智能清理、加速、安全保护等功能,帮助用户轻松
品牌手机排行榜前十名手机品牌排行榜前十名「品牌手机排行榜前十名」
华为创立于1987年,是全球领先的信息与通信技术(ICT)解决方案供应商,在电信运营商、企业、终端和云计算等领域构筑了端到端的解
手机CPU天梯图2023年2月最新版,你的手机排名如何?手机cpu天梯图「手机CPU天梯图2023年2月最新版,你的手机排名如何?」
2月已经过去,我们迎来了3月,冬日的寒冷逐渐消散,春天的日子已经触手可及。今天是我们3月份的第一天,芝麻科技讯更新了2023年2
6g运行手机(6g运行手机什么牌子好)
  关于《6G运行手机》的文章  随着科技的飞速发展,手机已经成为了我们日常生活中不可或缺的一部分。近日,各大手机品牌纷纷
手机控必看!大屏手机用出“手机手” 严重的要动手术手机手「手机控必看!大屏手机用出“手机手” 严重的要动手术」
你的手还好吗?鼠标手、键盘手、近视眼、肩周炎……难道这些伤害还不够吗?这不,最近又爆出新科技病——“手机手”!没有买卖,
相关文章