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

大数乘——“万进制” 网上看到了一种“万进制”的思路,时间、空间上都能节省。 这种思路就是充分利用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

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

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

weixin_33749131的博客 331

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

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

什么是万进制?

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

qq_44624316的博客 2558

保姆级教程:在RV1126开发板上跑通YOLOv5口罩检测(从数据集到摄像头实时识别)

本文提供了一份详细的RV1126开发板部署YOLOv5口罩检测系统的全流程指南,涵盖数据集准备、模型训练优化、边缘部署及实时摄像头识别等关键步骤。重点解析了RV1126开发板的性能特征、YOLOv5模型训练调优技巧、RKNN模型转换量化策略,以及部署过程中的性能优化方案,帮助开发者高效实现边缘端目标检测应用。

weixin_27310985的博客 108

STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)

STM8S全解析之系列文章4—STM8S芯片项目升级引导程序(使用中断接收升级数据) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)前言一、Flash划分boot和App二、使用步骤1.引入库2.读入数据总结 前言 用过STM8S都知道它没有中断向量重定向,也就意味着STM8S的中断向量没办法指向其他的位置,间接说明升级的引导

weixin_39853312的博客 1031

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

// 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的专栏 2871

rk3588 rkaiq_3A_server 无法解析json文件记录

rk3588 rkaiq_3A_server 无法解析json文件记录

neardi_dev的博客 1万+

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

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

Sagittarius_A*的博客 3134

glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc)

我的系统是Redhat7.6, 理论上Redhat7/Centos7都可以使用该方法解决问题。 首先慎重提醒各位:glibc升级会产生无法预料的后果!由于Android NDK需要高版本的glibc才可以使用,所以作死手动去更新了glibc2.18,使得重启系统后图形界面消失。(Redhat/Centos升级此类安装包最好用yum升级,因为系统内的程序对他们的依赖很大,升级会导致大部分程序无法使用...

weixin_42881528的博客 9695

vmware虚拟机网络连接问题

主机:ubuntu14.04 Vitual Network Editor

入门虽易,精通不易,且学且珍惜! 1354

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

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

YunWisdom 968

【Qt】QByteArray详解

对象共享同一份数据,直到修改时才进行深拷贝,以节省内存和计算资源。:可存储任意二进制数据(如图片、音频、协议数据),不依赖字符编码。与编码(如 UTF-8、Latin-1)之间的桥梁(例如。• 补零规则确保奇数字符串能正确解析,避免数据截断。:内部自动分配和释放内存,无需手动管理。将输入的字符串视为十六进制编码数据,返回实际数据长度(不包括结尾的。的输入必须是有效的十六进制字符(,但针对 Qt 框架做了优化。:处理加密后的二进制结果(如。• 如果输入字符串长度为奇数,• 若输入长度为奇数,自动在。

CSUC的博客 1597

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

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

qq_44736993的博客 1025

Python爬虫实战:基于最新技术爬取国家企业信用信息公示系统数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的国家企业信用信息公示系统爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、数据解析与存储等高级话题,最终实现一个完整的爬虫系统。文章包含大量实战代码示例,适合中高级Python开发者学习参考。网络爬虫(Web Crawler)是一种自动获取网页内容的程序,广泛应用于搜索引擎、数据分析和商业情报收集等领域。通用爬虫:如搜索引擎爬虫,广泛抓取互联网公开信息聚焦爬虫:针对特定领域或网站的数据采集增量式爬虫:只抓取更新内容,减少资源消耗。

2201_76125261的博客 2408

swl安装无法与服务器建立链接,如何解决?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 2075

巨大数的简单运算

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

飞鸿踏雪泥的博客 1595

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

进制转换以及万进制与亿进制的思路

进制转换 这里主要是十进制到二进制至十六进制之间的转换 #include<iostream> #include<string> #include<vector> using namespace std; static string str = "0123456789ABCDEF"; int main() { int n,base; cin >> n >> base; vector<char> decade; decade.pus

weixin_45778052的博客 929

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

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

weixin_30834019的博客 467

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

万进制,乘法

#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

巨整数相乘的简单实现

这是我看过的最简单的算法,思路就是我们小学学过的乘法运算。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

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

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

Java我们右转见 1050

巨大数运算

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

zhaoguangyuan123的博客 5035

巨大数的四则运算

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

qq_41046491的博客 1453

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

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

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值