相关文章
巨量算数 请求加密算法爬虫 巨量算数具体怎么使用
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://mip.xhstdz.com/ , 查看更多   
最新文章
Real Moto 2(真实摩托2游戏手机版)摩托手机「Real Moto 2(真实摩托2游戏手机版)」
《真实摩托2》是一款超级好玩的摩托车驾驶竞速类游戏,游戏采用了高清物理引擎打造,拥有逼真的画面和场景,真实的玩法内容,激
家居“新物种”:行业新革命!叶盛明珠发热岩板颠覆家居采暖逻辑
  展会盛况:科技与美学的完美结合  2025年3月27 - 30日,第14届广州定制家居展暨轻高定展在广州保利世贸博览馆盛大举行。展
如何连接usbusb怎么连接手机「如何连接usb」
在日常生活中,USB(Universal Serial Bus,通用串行总线)接口已成为我们连接各种设备与计算机的重要桥梁。无论是传输数据、充
售17.98万起! 北京BJ40增程版上市!双电机四驱+三把锁,硬派越野SUV的新扛把子?
4月7日,增程正式上市,新车共推出2款配置车型,售价区间为17.98-19.98万元。作为北京BJ40新增动力版本,该车搭载1.5T增程混动,
新增20+项新功能 提供高阶智驾选装 领克EM-P超电双子星OTA 1.8.0推送更新
近日, EM-P和08 EM-P正式迎来了OTA 1.8.0版本的升级。据悉,本次双车总计升级新增20+项功能,并优化了60+项体验,可实现“iOS+
vivo Y300 Pro+/Y300t发布,更实惠的千元手机
  vivo千元机又更新了,vivo Y300 Pro+与Y300t于3月31日正式亮相,为广大消费者带来实惠。  vivo Y300 Pro+是vivo Y系列首款
Canvalr手机版「Canva」
Canva是一款非常专业的图片制作app,能够给用户制作图片提供许多的帮助,让用户轻轻松松就能进行图片设计,非常的方便实用,可以
Nothing 2025 放大招:Phone(3)手机领衔,里程碑式新机登场phone手机「Nothing 2025 放大招:Phone(3)手机领衔,里程碑式新机登场」
IT之家 1 月 14 日消息,消息源 Evan Blass 昨日(1 月 13 日)在 X 平台发布推文,分享了裴宇发送给 Nothing 员工的内部电子邮
心有千千结 | 手机危害七宗罪&手机脸手机脸「心有千千结 | 手机危害七宗罪&手机脸」
手机无处不在方便生活的同时也给我们带来了极大的危害那么危害究竟有哪些我们又该怎样减少呢首先,带着大家看一下最爱手机的“民