自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

博客是在C++/Java/Liunx/算法的学习阶段所写的博客,内容可能不是很全面

博客都是在本人学习知识的基础上写的,可能会有些错误,请大家谅解

  • 博客(124)
  • 收藏
  • 关注

原创 Linux-线程互斥

多线程环境下,共享资源的并发访问可能导致数据不一致(如抢票变负数)。问题根源在于临界区代码未受保护,导致多个线程同时读写共享变量。解决方法是使用互斥量(mutex)对临界区进行加锁保护,确保任一时刻仅一个线程可进入临界区,实现原子性访问。互斥量通过原子操作(如exchange指令)保证锁的获取与释放安全。但互斥可能引发线程饥饿,降低效率。因此,需合理使用互斥,并结合同步机制实现公平调度,保障资源访问的安全与高效。

2026-10-30 16:08:11 278

原创 Linux-线程封装

本文实现了一个封装pthread的自定义线程类Thread,通过std::function支持任务回调,利用静态成员函数start_routine接收this指针实现线程启动与控制。添加_isrunning标志位确保安全Join,并通过syscall(SYS_gettid)获取LWPID,完整实现了线程创建、启动、等待与资源回收功能,加深了对多线程机制的理解。

2026-10-30 08:54:15 169

原创 Linux-线程控制

Linux中,进程是资源分配的基本单位,线程是调度的基本单位。进程间独立,拥有独立的虚拟地址空间;线程共享进程资源,包括代码、数据、文件描述符等,但各自拥有私有数据如线程ID、栈和寄存器。通过pthread_create创建线程,使用pthread_join等待线程结束,避免资源泄漏。线程可分离(pthread_detach)以自动释放资源。线程共享堆、全局变量和函数,但局部变量在栈上不共享。线程崩溃会导致整个进程终止,因此需谨慎处理。__thread关键字实现线程局部存储,使每个线程拥有独立的变量副本。C

2026-10-29 19:27:17 438 3

原创 Linux-线程概念

本文系统阐述了Linux下线程的概念与实现机制。指出线程是进程内部的执行流,为CPU调度的基本单位,而进程是资源分配的基本单位。通过重谈虚拟地址空间与页表机制,解释了虚拟地址到物理地址的映射过程,强调页表以4KB为单位进行映射,提升内存管理效率。进一步说明Linux内核中线程通过轻量级进程(LWP)实现,复用进程控制块(task_struct),使用clone系统调用创建,由pthread库封装提供线程接口。线程相比进程更轻量化,切换开销小,因共享同一虚拟地址空间,无需切换页表和刷新TLB。文章还分析了多线

2026-10-28 19:19:41 144 1

原创 Linux-信号

信号在进程中的处理机制涉及未决、阻塞与递达三个状态。信号产生后先被保存,处于“未决”状态,若被阻塞则无法递达。进程通过三张表(pending、block、handler)管理信号,使用sigset_t信号集及sigprocmask、sigpending等系统调用操作。信号处理在从内核态返回用户态时进行,依赖中断机制(如时钟中断、软中断)。自定义信号处理需注意可重入性与volatile关键字以保证内存可见性。SIGCHLD信号可用于自动回收子进程,避免僵尸进程。

2026-10-28 13:14:32 364 2

原创 Linux-Linux信号

信号是进程间异步通知的机制,用于传递事件信息。其本质是软中断,由操作系统在特定条件下(如键盘输入、异常、系统调用等)发送给目标进程。进程通过位图记录收到的信号,处理方式包括默认动作、忽略或自定义捕捉。信号产生方式多样,涵盖键盘操作(如Ctrl+C发SIGINT)、kill命令、系统调用(如alarm、raise、abort)及硬件异常(如除零、野指针)。部分信号不可被忽略或捕捉(如SIGKILL),确保系统可控性。信号处理非立即执行,需在合适时机响应,且可通过coredump机制保存崩溃时的上下文,便于事后

2026-10-26 12:30:30 79

原创 Linux-进程间通信2

命名管道通过特殊文件实现无血缘关系进程间通信,数据在内存中传递不刷新磁盘,读写阻塞等待对方打开。共享内存以物理内存块为基础,通过shmget、shmat等系统调用创建并映射至进程地址空间,实现高效通信,但需手动管理生命周期与同步机制。二者均属SystemV IPC,生命周期随内核,速度快但缺乏内置同步保护。

2026-10-23 13:21:38 257 2

原创 Linux-进程池

本文实现了一个功能完整的C++进程池,通过管道通信实现父进程与子进程的协作。核心内容包括:头文件分离设计、使用std::function实现回调机制、封装Channel类管理信道、轮询调度任务并随机分配任务码,结合fork()创建子进程,利用read/write进行通信。关键优化点在于正确处理子进程退出问题——通过关闭所有写端描述符并分步等待,避免因文件描述符继承导致僵尸进程。最终实现任务均衡分配、子进程自动回收,具备可扩展性与实用性,适用于高并发场景下的任务分发。

2026-10-19 21:12:52 208

原创 Linux-进程间通信1

进程间通信(IPC)是实现多个进程协同工作的基础,解决进程独立性带来的数据共享难题。通过操作系统提供的共享资源(如内存),进程可安全传递数据、共享资源、通知事件或实现进程控制。主要方式包括管道、SystemV IPC和POSIX IPC。管道基于文件系统,为匿名或命名的单向通信机制,具有生命周期随进程、面向字节流、自带同步等特性。其核心原理是父子进程通过pipe()创建通信信道,利用文件描述符继承与关闭机制实现单向通信。当读端不读时写端会阻塞直至缓冲区满;写端关闭后读端返回0表示文件结束;读端关闭则写端进程

2026-10-19 15:32:56 374

原创 Linux-动静态库

库是预先编写、可复用的代码集合,分为静态库(.a/.lib)和动态库(.so/.dll)。静态库在编译时被合并到可执行文件中,不依赖外部文件;动态库则在运行时加载,节省内存并支持共享。两者均为ELF格式文件,通过链接器合并目标文件生成可执行程序。静态链接在编译时完成地址重定位,动态链接则在运行时通过GOT/PLT机制实现位置无关调用。动态库需配置路径或软链接以被系统找到,且可通过环境变量或配置文件全局设置搜索路径。理解库的本质有助于掌握程序的编译、链接与加载过程。

2026-10-17 10:16:31 145

原创 Linux-Ext系列文件系统

本文系统阐述了磁盘的物理与逻辑结构,重点解析了传统机械硬盘的CHS寻址方式及现代LBA地址机制。通过将磁盘抽象为以扇区为单位的一维数组,引出块设备概念,并介绍分区、文件系统的基本构成。核心内容涵盖块组内部结构:数据块(DataBlocks)、块位图(BlockBitmap)、inode表(InodeTable)、inode位图(inodeBitmap)与超级块(SuperBlock)等关键组件。文章深入探讨了文件系统如何通过inode管理文件属性与内容映射,结合路径解析与dentry缓存机制,解释Linux

2026-10-12 13:11:04 192

原创 Linux-简单设计libc库

本文实现了一个简易的C标准I/O库mystdio.h与mystdio.c,模拟了fopen、fwrite、fflush、fclose等核心功能。通过自定义MyFILE结构体管理文件描述符、缓冲区及刷新策略(行刷新/全刷新),结合memcpy和write系统调用,实现了用户层缓冲机制。测试代码验证了按行刷新行为,展示了缓冲区在写入时的自动刷新逻辑,并通过Makefile简化编译流程。该实践深入理解了文件I/O底层原理,为后续学习文件系统奠定了基础。

2026-09-15 18:22:08 183

原创 Linux-文件缓冲区

Linux中“一切皆文件”指所有设备(如键盘、显示器、磁盘)及资源(如管道、套接字)均被抽象为文件,通过统一的read/write接口操作,实现上层接口一致、下层多态。进程通过文件描述符访问这些“文件”,内核维护struct file与file_operations函数指针表,屏蔽底层差异。缓冲区机制则提升I/O效率:语言级缓冲(如FILE结构)减少系统调用次数,按行、全缓冲或立即刷新策略管理数据;进程退出或fflush可强制刷新。标准输出(stdout)与标准错误(stderr)可独立重定向,便于调试。

2026-09-15 11:15:32 241

原创 Linux-基础IO

本文系统阐述了文件操作的本质:进程通过打开文件将文件内容与属性加载至内存,实现对文件的增删查改。核心在于理解文件描述符是进程文件描述符表的下标,用于索引内核中struct file结构体。C语言fopen是系统调用open的封装,其返回的FILE*内部封装了文件描述符。通过dup2可实现重定向,改变标准流指向。子进程继承父进程的文件描述符表,程序替换(exec)不影响已打开文件。最终,结合系统调用与文件描述符机制,可实现如输出/输入重定向等高级功能,为理解Linux文件系统与Shell设计奠定基础。

2026-09-11 11:20:46 225

原创 Linux-自主Shell命令行解释器

<think>我们只需要根据用户提供的长文本,生成一个不超过150字的摘要。摘要应涵盖文章的核心内容:目标、实现步骤、关键点(提示符、获取命令、解析、内建命令、子进程执行、总结)。要控制在150字以内,所以必须精炼。</think>文章手写了一个简易Shell,实现命令行提示符获取、命令解析、fork/exec执行子进程及cd、echo等内建命令,并演示子进程备份父进程数据的并发场景,帮助理解Shell运行原理。

2026-09-09 10:14:24 173

原创 Linux-程序替换

本文深入讲解Linux进程的程序替换机制。首先介绍程序替换的背景与原理,说明程序替换是fork之后让子进程执行一个全新程序的过程,通过特定接口将磁盘上的新程序(代码和数据)加载到调用进程的地址空间中,且不会创建新进程。随后重点讲解execl接口的使用,包括可变参数的实现原理、execl函数的参数含义、程序替换成功与失败的行为差异,以及如何用execl替换子进程的代码和数据。最后系统介绍程序替换的其他接口(execv、execlp、execvp、execvpe、execle、execve),涵盖命令行参数传递

2026-09-04 12:04:50 202

原创 Linux-进程控制

<think>我们根据用户要求:根据给定内容生成≤150字的文章摘要。内容是关于Linux进程控制:fork、退出、等待。要写摘要,语言简洁,涵盖要点,字数限制。需要仔细阅读原文,提取核心。摘要≤150字(中文大概)。我们先筛选重要内容:进程创建使用fork,写时拷贝优化;进程终止有退出码和信号;进程等待用wait/waitpid回收僵尸进程并获取状态。字数需控制。例如:“本文介绍Linux进程控制:fork创建子进程,采用写时拷贝提高效率;进程退出通过退出码和信号反映结果;父进程用wait/w

2026-09-02 17:50:11 194

原创 Linux-程序地址空间

<think>我们根据要求生成一个摘要,内容来自用户提供的长篇博客,概念围绕进程地址空间。需要≤150字。用户要求“根据以下内容,生成≤150字的文章摘要”。需要抓住核心:程序地址空间实际上是进程地址空间,虚拟地址与物理内存通过页表映射,进程独立性和写时拷贝,以及虚拟地址空间的作用(内存管理解耦、按需加载、保护内存等)。摘要应简洁。 字数限制严格。我们输出一个中文摘要,尽量不超过150字。可以写:本文阐述了进程地址空间(虚拟地址空间)概念,通过实验验证内存布局,引入页表实现虚拟地址到物理地址映射

2026-08-31 13:14:31 193

原创 Linux-命令行参数和环境变量

本文深入讲解Linux环境变量与命令行参数的核心机制。文章从main函数的参数形式入手,详细剖析了argc与argv的含义、命令行参数如何被父进程bash打散并传递给子进程,以及如何通过命令行参数实现程序的不同功能。随后系统介绍了环境变量的基本概念,重点讲解了PATH环境变量的作用与配置方法,并通过实验验证了操作系统在PATH中查找可执行程序的机制。文章还介绍了env、getenv、environ等多种获取环境变量的方法,解释了环境变量表的形成过程及其内存级特性,并通过本地变量与环境变量的对比,阐明了环境变

2026-08-27 19:19:45 236

原创 Linux-进程切换和调度

摘要:本文围绕操作系统中的进程切换与 Linux 进程调度展开讲解。第一部分从 CPU 寄存器与上下文数据入手,说明进程切换的本质是保存并恢复寄存器中的临时数据,并介绍了时间片、分时系统与并发运行等核心概念。第二部分深入剖析 Linux 的进程调度机制,重点讲解 O(1) 调度算法中 queue[140] 优先级队列、bitmap 位图、活跃队列与过期队列的配合原理,并进一步说明调度器从 O(1) 演进到 CFS(完全公平调度器)后的核心变化,最后解释了 Linux 为何没有就绪状态以及预留 100 个优先

2026-08-26 15:57:13 245

原创 Linux-进程优先级

摘要:本文系统讲解 Linux 进程优先级的核心概念与实战操作。文章从「进程得到资源的先后顺序」这一本质出发,区分了优先级与权限的差异,并解释了资源少、进程多导致优先级存在的必然性。随后介绍如何通过 ps -l、ps -al 查看进程的 PRI 与 NI 字段,深入剖析 PRI 与 NI 的关系及 PRI(new)=PRI(old)+nice 的计算公式,说明 Linux 中 PRI(old) 固定为 80 的设计原因。实战部分演示了使用 top、nice、renice 调整进程优先级的方法,并验证 nic

2026-08-25 17:23:39 177

原创 Linux-Linux的进程状态

摘要:本文深入解析Linux操作系统中进程的各种状态及其实际应用。从运行状态(R状态)到休眠状态(S状态),再到深度睡眠状态(D状态)、暂停状态(T状态)、追踪状态(t状态),以及进程终止相关的X状态和Z状态(僵尸状态),每个状态都通过代码示例和实际操作进行详细演示。文章还探讨了孤儿进程的形成机制、进程状态查看方法,并分析了僵尸进程的危害。通过理论与实践相结合的方式,帮助读者全面理解Linux进程状态管理的核心概念。

2026-08-21 17:47:32 214

原创 Linux-进程4

本文主要探讨了进程创建、状态管理及Linux内核实现。首先通过fork()函数创建多进程,父子进程执行顺序由操作系统调度决定。进程状态本质是PCB中的整型变量,通过修改该值实现状态转换。运行状态的进程需加入CPU调度队列,阻塞状态的进程则被移入设备等待队列。Linux内核通过双链表管理进程PCB,支持多队列共存。当内存不足时,阻塞进程的代码和数据可能被换出到磁盘(挂起状态)。文章从代码实例出发,结合Linux内核实现,解析了进程状态转换的底层机制。

2026-08-19 19:05:07 255

原创 Linux-进程3

本文介绍了Linux中进程的基本概念和操作。首先通过一个死循环程序演示了进程的运行状态,并讲解如何通过getpid()获取进程ID。详细说明了查看进程的两种方法:/proc目录和ps命令,重点分析了进程的工作目录(cwd)和可执行文件路径(exe)。接着探讨了父进程(PPID)与子进程的关系,指出命令行程序均由bash创建。最后深入解析fork()系统调用,展示其创建子进程的特性:1)父子进程共享后续代码;2)fork()返回两个值(父进程获子进程PID,子进程获0);3)通过返回值区分父子进程执行不同代码

2026-08-18 18:50:42 213

原创 Linux-进程2

本文阐述了进程的基本概念及其在操作系统中的管理机制。进程是加载到内存的程序,由PCB(进程控制块)和代码数据组成。操作系统通过PCB数据结构(Linux中为task_struct)管理进程,包括进程标识符、状态、优先级、程序计数器等信息。PCB以链表形式组织,操作系统通过增删查改PCB来管理进程。进程调度涉及硬件上下文保存与恢复,task_struct中包含相关数据结构。文章还介绍了Linux内核源码中task_struct的具体实现,并提及进程排队和调度的基本原理。

2026-08-14 11:33:41 241

原创 Linux-进程1

文章摘要:本文首先阐述了冯·诺依曼体系结构的核心组成(输入/输出设备、存储器、CPU)及其数据流动原理,指出内存作为CPU与外设的缓存层对提升计算机效率的关键作用,并通过QQ聊天实例说明数据通过网卡-内存-CPU的传输路径。其次,解析操作系统作为软硬件资源管理者的角色,提出“;先描述(结构化数据)、再组织(数据结构)”的管理本质,并以学生管理系统类比说明。最后,强调系统调用是用户访问硬件的安全接口,上层库函数(如C标准库)和图形界面(如安卓)对其进行了易用性封装,形成计算机系统的层次化架构。

2026-08-13 12:45:41 199

原创 Linux-调试器-gdb/cgdb的使用

摘要:本文详细介绍了Linux下gdb和cgdb调试工具的安装与使用方法。内容包括:1)Ubuntu和CentOS系统下的安装命令;2)演示代码的编译与调试模式设置,强调debug模式的重要性;3)gdb/cgdb基础调试命令如断点设置、单步执行、变量查看等;4)高级调试技巧包括条件断点、watch命令、函数堆栈查看等。重点比较了gdb和cgdb的差异,推荐使用界面更友好的cgdb进行调试。文章还提供了实用的调试策略,如通过条件断点缩小问题范围、使用watch监控变量变化等技巧,帮助开发者有效定位和解决代码

2026-08-12 18:36:24 367

原创 Linux-版本控制器Git

本文介绍了版本控制系统Git的核心概念与基本操作。文章以文档版本管理为切入点,通过示例说明传统备份方式的不足,阐述了Git作为分布式版本控制系统的工作原理:本地仓库通过add/commit记录文件变更,push/pull实现与远端仓库的同步,确保多人协作时代码的一致性。详细讲解了Git的安装配置、仓库创建、文件提交三步骤(add/commit/push)以及.gitignore、git status等实用功能。最后提供了SSH密钥配置实现免密推送的方法。Git通过记录文件变化而非简单复制,有效解决了版本追溯

2026-08-12 13:10:09 946

原创 Linux-Linux第一个系统程序-进度条

本文通过C语言实现了一个动态进度条程序,主要探讨了以下关键技术点:1)行缓冲区的刷新机制,包括使用fflush(stdout)强制刷新和\n自动刷新;2)回车(\r)与换行(\n)的区别,及其在光标控制中的应用;3)动态进度条的实现方法,包括百分比显示、进度条增长和旋转光标效果;4)通过usleep模拟下载过程,实现真实场景下的进度更新效果。文章详细演示了从简单倒计时到完整进度条的开发过程,最终实现了一个包含百分比进度、动态旋转标识和自适应显示的进度条程序。

2026-08-11 17:10:16 187

原创 Linux-Linux基础开发工具3-自动化创建make/Makefile

摘要:本文介绍了Linux下的make工具和Makefile文件的基本用法及原理。make是一种自动化构建工具,通过解析Makefile中的指令实现项目编译。文章演示了Makefile的基本编写方法,包括依赖关系、依赖方法和伪目标(.PHONY)的使用,并通过实例说明如何通过Tab键解决格式问题。同时,文章深入讲解了make的工作原理,包括文件修改时间的对比机制,以及如何通过变量优化Makefile编写。最后,介绍了通配符和模式规则的高级用法,使Makefile能自动处理多个源文件,提高编译效率。

2026-08-11 13:06:19 298

原创 Linux-Linux基础开发工具2-编译器gcc

gcc:只能用来编译C语言;g++:主要用来编译C++,但也可以编译C语言。

2026-08-10 12:23:17 195

原创 Linux-基础开发工具1

本文主要介绍了Linux系统下的软件包管理与vim编辑器的使用。第一部分讲解了软件包的概念,包括源码安装、rpm安装和apt/yum工具安装三种方式,重点介绍了apt包管理器的具体操作(查看、安装、卸载软件包)和软件源配置。第二部分详细阐述了vim编辑器的三种模式(命令模式、插入模式、底行模式)及其转换方式,重点说明了命令模式下的光标移动、文本编辑(删除、复制、替换、撤销)等操作技巧,以及底行模式下的文件保存、查找替换、分屏操作等功能。最后简要介绍了vim的个性化配置方法,建议通过修改用户目录下的.vimr

2026-08-08 19:01:52 283

原创 Linux-Linux的权限

每一种人的第一个字符为r/-,r/-代表用户是否有可读权限(是否可以查看文件内容的权限),如果第一个字符为r,则可读,否则,不可读。第二个字符为w/-,w/-代表用户是否有可写权限(是否能修改文件内容的权限),如果第二个字符为w,则可写,否则,不可写。这是因为没有r权限,r权限没有,就看不到菜单,尽管你知道目录下有个8.7,你可以进去,但是却不能看到目录(/home/tan)下的其他文件,也就是说没有“查看柜门上的标签清单”的能力。有权更改它的权限(root享有最高权限,可以无视权限约束)。

2026-08-08 14:33:42 337

原创 Linux-Linux的原理和权限问题

本文介绍了Linux命令行提示符的构成(包括用户名、主机名和提示符)以及Shell外壳程序的作用(保护操作系统和方便用户操作)。详细讲解了Linux用户权限管理,包括超级用户(root)和普通用户的区别、用户创建与切换(su/adduser)、文件权限属性(rwx)以及sudo提权机制。文章还解释了Linux文件类型(普通文件、目录、软链接等)与Windows的区别,强调Linux不依赖文件后缀名识别类型,但部分工具仍需要规范后缀。最后说明了权限管理的核心概念:权限=用户角色(拥有者/组/其他)+文件属性(

2026-08-07 18:14:52 216

原创 Linux-Linux基础指令7

本文总结了Linux系统中常用的指令和Xshell热键操作。重点讲解了tar指令的打包/解包功能及各种参数用法(-c创建、-x解压、-t查看等),对比了与zip/unzip的区别。同时介绍了bc计算器、uname系统信息查询、shutdown关机指令等基础命令。在Xshell热键方面,详细说明了Ctrl+C终止程序、Tab命令补全、Ctrl+D退出登录、Ctrl+R历史命令搜索等功能。文章还提供了Linux系统管理、文件处理、网络操作等扩展命令参考,适合Linux初学者快速掌握常用操作。

2026-08-07 12:16:14 271

原创 Linux-Linux基础指令6

本文介绍了Linux系统中常用的8个文件操作指令: find:强大文件搜索工具,支持按名称/大小查找,可递归搜索目录树 which:定位命令的二进制文件路径 whereis:查找程序的源文件、二进制文件或手册 alias:设置命令别名(如ll替代ls -l),可永久保存配置 grep:文本搜索工具,支持大小写忽略(-i)、显示行号(-n)、反向匹配(-v) top:动态查看系统进程信息(类似任务管理器),支持设置刷新间隔 zip/unzip:文件压缩/解压,需配合-r参数递归处理目录 lrzsz:实现Win

2026-08-06 21:35:59 284

原创 Linux-Linux基础指令5

本文介绍了Linux系统中几个常用文件查看和时间管理指令的用法。1.文件查看指令:more适合分页查看大文件(如日志),支持进度显示;less更灵活,支持上下翻页和内容搜索;head/tail分别查看文件开头/结尾内容,可配合管道实现行数筛选。2.时间指令:date支持自定义格式显示时间、设置系统时间及时间戳转换;cal用于查看日历,支持年份/月份显示及特殊格式输出。这些指令在日志分析和时间管理场景中非常实用,其中more/less常用于大文件查看,date的时间戳功能在程序计时中尤为重要。

2026-08-06 19:20:06 161

原创 基础算法-高精度:高精度除法

本文介绍了高精度除法问题(P1480A/BProblem)的解决方法。题目要求实现高精度整数除以低精度整数的运算。解法采用字符串读取被除数并逆序存储为数组,除数直接用int存储。通过模拟竖式除法过程,从最高位开始逐位计算商和余数。关键点在于处理前导零:当商的高位出现零时,通过递减输出长度lc来跳过这些无效零,但保留最后一位零以防结果为零。文中提供了完整C++代码实现,包括输入处理、除法运算和结果输出逻辑。

2026-04-10 13:21:21 211

原创 基础算法-高精度:高精度乘法

本文介绍了高精度乘法P1303题目的解题方法。主要采用字符串转数组后模拟竖式乘法的思路:1) 用字符串读入数字并逆序存入数组;2) 通过双重循环实现无进位相乘;3) 统一处理进位;4) 去除前导零。关键点在于乘积数组长度设为两数位数之和,以及先进行无进位相乘再统一处理进位。代码使用数组存储数字,逆序排列方便处理,最终结果再逆序输出。时间复杂度为O(n^2),适用于大数相乘场景。

2026-04-09 20:46:51 186

原创 基础算法-高精度:高精度减法

本文介绍了高精度减法的实现方法。通过字符串读入两个大数,比较大小后确定是否需要交换并输出负号。将数字逆序存入数组,模拟竖式减法过程,处理借位操作。重点解决了结果中的前导零问题,使用while循环在lc>1时去除前置零。最终逆序输出结果,确保处理边界情况如999-999=0时也能正确显示。该方法与高精度加法类似,但需额外处理负数和前导零问题。

2026-04-09 19:51:23 196

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除