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

大数乘——“万进制” 网上看到了一种“万进制”的思路,时间、空间上都能节省。 这种思路就是充分利用int类型所能存数的范围,如果之前写大数乘,我是将每一位放在int数组的每个元素,比如:174596332,放在数组中为 int a[] = {1,7,4,5,6,3,3,2} ; 然后拿数组每个元素从低位到高位乘另一个数,处理进位。 “万进制”不以一位(十进制)分割数了,而是4位,那么上面的数在数组中就可以存为:int ... 阅读详情

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

巨大数运算目的是为了解决数据范围大于数据类型能表示的范围之内的现象,例如 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减去得到最终的结果

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

【C语言->数据结构与算法】->巨大数的加减乘->万进制的运用及神奇的微易码补码 Ⅰ 巨大数的概念 所谓巨大数,就是字面意思所指的非常大的数,大到C语言中无法表示出来,更不能计算。 Ⅱ 巨大数的意义 IT界有一个著名的问题,千年虫问题。 计算机2000年问题,又叫做“千年虫”、“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K”。是指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世... 阅读详情

相关推荐

巨大数四则运算

大数的四则运算     历经10天时间完成了整数巨大数的四则运算,一方面由于太懒没有同时完成小数巨大数部分,另一方面小数巨大书的完成也是建立在整数的基础之上,这也是没有同时完成小数部分的一个主要原因。完成整数是一个摸索的过程,完成之后在技术上有一定的成熟,再转向小数效率会更加的高,整体大框架也会更好,不必大作改动。     实现大数的目的在于,解决超出计算机可表示范围数据的存储以及运算,计算机...

kwenzh的博客 1455

什么是万进制?

什么是万进制? 今天在写数论的大数的时候。在练习java。后来发现大数也可以采用万进制解决。 什么是万进制。 万进制和二进制啊,八进制,十进制,十六进制等差不多。 举个例子: 我们计算107223432 * 14的式子; 十进制计算起来很简单。 看看万进制的式子: 我们万进制存储在数组中,每个数组存四位。从低位开始存起。 1.存数 a[0] = 3432; a[1] = 0722 = 722;...

qq_44624316的博客 2558

魔鬼A*B两个数字非常巨大,因此可能需要你用一些特殊的办法来实现乘法。

实现大数相乘不会溢出的问题。需要相乘的两个数字非常巨大,因此可能需要你用一些特殊的办法来实现乘法。

巨型整数的运算(绝对原创)

// HugeInt.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#include#include#includeusing namespace std;int ConvetToInt(char ch){ return ch-48;}class HugeInt{private: short *HugeNum;//存储 l

MSDA的专栏 2870

医疗影像处理实战:如何用Slicer和Mimics将.nii.gz文件转为.ply格式(附避坑指南)

本文详细介绍了利用3D Slicer和Materialise Mimics软件,将医学影像中常见的.nii.gz格式文件转换为通用三维网格.ply格式的完整实战流程。文章重点分享了从数据分割、DICOM序列导出到高质量网格生成的核心步骤与关键参数设置,并提供了针对常见问题的避坑指南,旨在帮助医学影像研究者和工程师高效完成从体数据到三维模型的关键转换。

weixin_28304023的博客 102

从零搭建VGGNet

在 forward 方法中实现了前向传播过程,包括卷积、激活、池化和平铺操作,最后通过全连接层得到分类结果。使用 torch.onnx.export 将模型导出为 ONNX 格式的文件 vgg.onnx。导出 ONNX:将模型导出为 ONNX 格式,便于在其他平台或框架中使用。定义 VGG 网络:构建了一个包含多个卷积层、池化层和全连接层的网络。使用 torch.save 将整个模型保存为 vgg.pth 文件。前向传播:对输入数据进行前向传播,得到输出结果。保存模型:将模型保存为 .pth 文件。

开源驱动,创造价值;坦诚清晰,快速失败;让复杂可计算。 521

现代密码学的数学地基:从模运算到离散对数

本文从程序员视角出发,用实例讲解现代密码学的核心数学工具。重点介绍了模运算的基本概念、代数性质和快速幂算法,阐述了模运算在密码学中的关键作用:通过有限性、单向性和群结构实现安全加密。文章还详细解析了欧几里得算法求最大公约数的原理与实现,为理解密码学算法奠定了数学基础。这些工具构成了RSA、Diffie-Hellman等加密协议的底层支撑。

Sagittarius_A*的博客 3134

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3657

DH与ECDH密钥交换算法:原理、应用与国标实践指南

密钥交换是密码学中的核心概念,它解决了在不安全信道上安全协商共享密钥的难题。其基本原理基于单向函数,使得双方能独立计算出相同密钥,而窃听者无法推导。这项技术的核心价值在于实现前向保密,即使长期私钥泄露,历史会话仍安全。在工程实践中,密钥交换广泛应用于TLS/SSL、SSH、安全通信协议等场景,是构建HTTPS、保障数据传输安全的基础。针对当前广泛使用的RSA密钥交换,现代系统更推荐采用基于椭圆曲线的ECDH算法,它在提供更高安全强度的同时,大幅提升了计算效率并降低了资源消耗。本文深入解析了DH和ECDH的数

weixin_33749131的博客 331

ResNet改进(7):添加 SK注意力机制

实现 SK 注意力机制。

2401_82355416的博客 731

【WorkBuddy专栏36】从踩坑到上线——WorkBuddy代码开发避坑指南与部署完全手册

【WorkBuddy专栏36】从踩坑到上线——WorkBuddy代码开发避坑指南与部署完全手册

AI人人懂 1062

Python机器学习:从零基础到项目实战

当您翻开此书,您正踏入一场数据与智慧的修行。机器学习,并非冰冷的符码,而是机器模拟人类洞察世界的法门。本书将带您,以Python为舟,泛游于算法之海。我们不只传授“术”,更探求其后的“道”——从数据的生灭流转中观照规律,于模型的迭代演进里体悟得失。愿您合上书卷时,收获的不仅是驾驭数据的技能,更有一双洞悉复杂、化繁为简的“智慧之眼”。现在,让我们一同启程。

YunWisdom 966

Apollo Planning决策规划算法代码详细解析 (2):Scenario执行

上一章节讲Scenario的决策逻辑,当确认当前Scenario后,本章节继续深入讲解在代码中,Scenario的执行过程。Scenario的Process()函数根据配置文件顺序执行stage,并判断目前处于哪个stage。当确认好stage后调用该stage对应的Process()函数,来进行具体的规划任务。 码字不易,喜欢的朋友们麻烦点个关注与赞。 在本文你将学到下面这些内容: Scenario的Process()函数的作用于调用方式; Scenario对象的初始化方法; 如何给每个Scen

自动驾驶Player的博客 5608

【C语言>数据结构与算法的应用4】巨大数----加减乘运算(万进制和Mec补码的应用)

巨大数什么是巨大数目的巨大数的加法巨大数的存储万进制微易码补码巨大数的减法巨大数的乘法总结 什么是巨大数 巨大数其实就是有效数字位很大,可表示数的大小超过了int 的表示范围:[-217483648,2147483647],虽然float、double类型可表示的数的范围很大,分别为:3.4E-38~3.4E+38、1.7E-308~1.7E+308。但是它们的有效数字位却不大,分别为:6 – 7...

qq_44736993的博客 1024

使用C#实现Padim算法的训练和推理:智能缺陷检测的前沿技术

Padim (Patch-based Deep Image Model) 是一种用于无监督异常检测的深度学习算法。它通过提取图像中的局部特征(patch),并在这些特征上构建一个正常样本的分布模型来识别异常。无监督学习:不需要标注数据,适用于缺乏标签的情况。局部特征提取:通过卷积神经网络提取图像的局部特征(patch)。低秩近似:利用低秩近似构建正常样本的协方差矩阵,有效降低计算复杂度。鲁棒性强:能够处理多种类型的缺陷和噪声。

墨夶的博客 1013

Unreal Engine开发:多人联机与网络同步_延迟补偿与预测

通过延迟补偿和预测技术,我们可以显著减少网络延迟对多人在线动作游戏的影响,提升玩家的体验。延迟补偿主要在服务器端实现,通过回溯时间点来更准确地处理输入和事件。预测技术主要在客户端实现,通过预先计算玩家的动作结果来减少延迟感。结合这两种技术,可以实现更平滑、更公平的多人游戏体验。

chenlz2007的博客 1191

高精度计算(三):大整数和减法(采用“万进制”)

一般我们称基本数据类型无法表示的整数为大整数。而对于那些精度要求很高的数据通常称为高精度数,或称大数。 表示和存放大数的一个简单的方法就是:用数组存放和表示大数。一个数组元素,存放大数中的一位。 显然,在C/C++语言中,int类型(4个字节/32位计算机)数组元素存储十进制的一位数字非常浪费空间,并且运算量也非常大,因此可将存储优化为万进制,即数组的每个元...

weixin_30834019的博客 467

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

巨大数——三则运算(+、-、*)

这篇博文,主要讲解了一个思想 —— 将字符串转换为数值,再转换为结构体,以及部分文件操作的复习使用。 那么,回归主题: 据我们所知,int 型变量最大能表示的正数是21亿多,那么,如果我们要处理比21亿大很多的数据,我们要怎么实现呢?因为其他类型也是有极限值的,所以,如果突破了极限,就会出现错误。口说无凭,我们来用vc6.0尝试下: 可以看到,我输入了22亿,但是输出的却不是43亿。所以,由此可...

Java我们右转见 1050

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

巨大数的简单运算

一:背景 当前计算机对于数据的处理是存在一定限度的,用与计算处理各种数据,c语言提供了许多整数类型,一般情况系使用int类型即可,但是要满足特定任务和机器要求的时候,数据超出处理范围时就需要使用另外的方法对这些数据进行处理,虽然float类型(可表示的数据范围是 )和double类型(可表示的数据范围- )也可以使用,但是float的有效位数只有7位,double类型的有效位数也...

飞鸿踏雪泥的博客 1595

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

巨大数运算

巨大数运算 在int是四字节补码的前提下,很容易得出int类型的变量所能表示的最大正数是21亿多,如果我们要处理的数据远远大于21亿,那么该怎么办呢?并且如果我们的数据超出极限,那么便会产生错误。下面代码便是证明 可以看到当输入为800多亿的时候,已经产生了错误的输出结果。为了解决这个问题,我们来编写一个程序,来完成对任意大小的数据加减乘除运算,并且为了简便,在此只讨论整数的情况 核心技术 1 万进制存储 对于这个问题,最最直白又直接的处理方案就是把数据存储在字符数组中,并且逐位计算,处理每一位时还要

zhaoguangyuan123的博客 5035

巨大数加减法(微易码补码)

通常的加减法是用元素本身进行加减,加法直接相加,找进位。减法先判断两个数大小,用大数减小数再判断是否加负号。 而这次加减法利用的是微易码补码。 因为计算机利用补码来通过加法完成不带借位的减法,教主利用这种思想研究出了微易码补码。 微易码补码: ①若数据为整数,则补码为其本身 ②若数据为负数,则每个元素的补码为9999 - 该元素 加减计算总共三种: ①正+正 ②正+负 ③负+负 重点需要考虑进位的问题 列出各种情况和中心问题后,下面举一些例子深入理解一下: ...

MagicSound的博客 526

巨大数的四则运算

目的 巨大数实现的意义在于,当需要计算的数据,超出计算机可表示范围,那么按照平常的计算方法便会无能为力。这时,便需要一种可以解决更大位数计算的方法,也就是巨大数四则运算所存在的意义。而且我们的巨大数还可以为小数,因此起到增加计算精度的作用,在一些需要对数据进行精确计算的科研实验中,便起到巨大的作用。以int为例,当超过-217483648~2147483647范围数字计算机就不能正常表示。...

qq_41046491的博客 1453

巨整数相乘的简单实现

这是我看过的最简单的算法,思路就是我们小学学过的乘法运算。void Multiple(char A[], char B[], char C[])...{    int LenA = strlen(A), LenB = strlen(B);    int Index = LenA + LenB - 1;    // B is the multiplicand    for (int i = 

HappyTree的专栏 224

万进制,乘法

#include #include using namespace std; void num1(int s[],string st1); int a[2501],b[2501],c[5002]; //此处可以进行2500位万进制乘法,即10000位十进制乘法。 int main() {     string str1,str2;     cout     int len;

gate0088的专栏 1893
上一篇: 二维数组调时候的传参问题 and 一维数组的中括号秘密( [ ] )——实参与形参的对应 —————— 开开开山怪
下一篇: MVC模式初体验 properties解析工具 与 Dao层的结合 —————— 开开开山怪
开开开山怪
博客等级 码龄8年 41粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值