计算机组成原理(16):定点数与无符号数的加减运算
写在前面学习《计算机组成原理》的时候我一直觉得一个问题特别有意思为什么我们小时候都会做的加减法计算机却要花这么大的篇幅去研究我们拿起纸和笔算出15-24-9几乎不用思考可是计算机却要研究原码、反码、补码还要考虑溢出、进位、借位、符号位等各种问题甚至为了实现一个减法还要设计专门的硬件电路。刚开始接触这些内容时我觉得它们十分抽象甚至觉得补码就是考试要求背诵的知识点。但是随着不断学习我渐渐意识到补码并不是人为规定出来的一套规则而是计算机硬件经过长期发展后最合理、最高效的一种表示方式。这篇文章我想结合自己的理解把老师课堂上讲的内容重新整理一遍用更加容易理解的方式完整讲清楚定点数和无符号数的加减运算。如果你正在学习计算机组成原理希望这篇文章能够帮助你真正理解这些知识而不仅仅是为了应付考试。一、为什么计算机要研究加减运算很多人刚开始都会有一个疑问计算机不是会计算吗为什么还要专门研究加法和减法其实这里有一个很大的误区。我们平时看到的是15 24 39可是计算机看到的并不是数字而是一串二进制。例如15 00001111 24 00011000CPU 并不知道什么叫做十五也不知道什么叫做二十四。它真正认识的只有两种电平高电平 —— 1 低电平 —— 0CPU里面没有所谓的数学老师它只有无数个由晶体管组成的逻辑门。因此对于CPU来说加法实际上就是一位一位地相加 产生进位 继续向高位传播整个过程完全由硬件电路完成。所以《计算机组成原理》真正研究的问题其实是如何让硬件电路完成数学中的加减乘除而今天要讨论的就是最基础也是最重要的一步——定点数的加减法。二、什么是定点数所谓定点数Fixed Point Number其实就是小数点位置固定不变的数字。例如10110110如果规定最高位表示符号 后七位表示数值那么它就是一个八位定点整数。整个课程讨论的几乎都是这种形式。与它对应的是浮点数Floating Point Number也就是 IEEE754 标准那是后面的内容。所以在这里只需要记住定点数就是整数运算。三、带符号数究竟有哪些表示方法为了表示负数人们曾经设计过三种编码方式原码 反码 补码很多同学刚开始都会觉得为什么这么麻烦其实历史的发展过程就是这样的。人们先想到原码后来发现不好算于是发明反码反码还是有问题于是又发明补码。所以三者并不是同时出现的。1原码原码最容易理解。规则非常简单最高位表示符号 0 —— 正数 1 —— 负数例如15 00001111-15 10001111可以发现除了最高位不同其余完全一样。因此原码最大的优点就是非常符合人的思维。我们一眼就能知道最高位 0 说明是正数 最高位 1 说明是负数但是问题也马上出现了。如果让计算机直接拿这两个数去相加00001111 10001111得到的结果完全错误。为什么因为CPU根本不知道最高位其实不是普通的数据位。它只是老老实实把每一位都加起来。因此原码非常适合表示数字却非常不适合做运算。2反码后来人们提出了反码。规则也不复杂正数反码 原码负数符号位不变 其余位全部取反例如-15 原码 10001111反码11110000虽然这样解决了一部分问题但是又带来了新的问题。例如0 00000000-0 11111111居然出现了两个零。数学上只有一个零。计算机里面却变成了两个。这显然不是一个好的设计。因此反码最后没有真正成为计算机内部的运算编码。它更多只是补码形成过程中的一个中间状态。3补码最终人们提出了补码。补码规则是正数补码 原码负数原码 ↓ 除符号位外全部取反 ↓ 末位加一例如-15 原码 10001111取反11110000加一11110001这就是-15 的补码也就是说计算机真正存储的并不是原码而是补码。以后只要看到CPU运算几乎默认就是补码运算。四、为什么原码加法这么复杂很多教材都会直接告诉你原码不能直接做加法。但很少解释为什么。其实原因很简单。我们来看几个例子。第一种情况正数 正数例如15 8其实就是15 8结果23非常简单。只需要绝对值相加 符号保持正第二种情况负数 负数例如-10 (-8)其实就是10 8 18然后符号保持负得到-18也没有什么困难。第三种情况正数 负数事情开始变复杂了。例如14 (-15)到底怎么算显然不能直接相加。因为14 15 29显然不是答案。正确的方法应该是先比较绝对值。因为15 14所以15-141再决定符号。由于15 的绝对值更大因此答案应该是 -1所以14 (-15) -(15-14)第四种情况负数 正数例如-20 8步骤其实完全一样。先比较20 8所以20-812最后符号仍然是负得到-12五、为什么说原码几乎不适合硬件实现看到这里我们就能总结出一个规律。原码加法一共需要考虑四种情况运算情况计算方式正 正绝对值相加负 负绝对值相加正 负比较大小再相减负 正比较大小再相减注意最后两种。CPU必须先完成判断符号判断两个数谁的绝对值更大再决定谁减谁最后再决定结果的符号。也就是说一个简单的加法实际上内部需要设计大量复杂的控制逻辑。对于硬件来说这意味着更多的门电路更复杂的控制器更慢的运算速度更高的成本。站在计算机设计者的角度来看这显然不是一个好的方案。于是一个新的问题自然就出现了有没有一种编码方式能够让正数和负数都直接参与加法而不用额外判断符号答案就是——补码。六、补码为什么能够统一加减法很多教材都会直接告诉我们计算机中的整数运算全部采用补码。但是很少有人继续解释为什么偏偏是补码而不是原码或者反码其实补码最大的优势只有一句话CPU 不需要再关心符号位把所有位都当作普通二进制位进行相加即可。也就是说在补码世界里CPU根本不知道自己是在计算正数还是负数。它看到的只是01001101 11101010然后执行统一的一套加法规则从最低位开始相加有进位就向高位传递一直到最高位结束。整个过程中没有任何一步需要判断这是正数还是负数要不要比较绝对值谁大谁小是不是应该做减法CPU统统不用考虑。这就是补码最大的魅力。七、补码为什么能够表示负数这里很多同学都会疑惑一个二进制数为什么突然就能表示负数其实并不是这个二进制数本身变了。真正变化的是我们赋予它的解释方式。举一个八位补码的例子。11110111如果按照无符号数来看247但是如果按照补码来看-9为什么因为对于八位补码来说247 256 - 9也就是说247 ≡ -9 (mod 256)这里出现了一个非常重要的数学思想模运算Modulo。CPU并不会真的存储-9它存储的是256-9247只是我们约定247代表-9因此补码本质上就是一种模运算。这一点也是后面理解无符号数补数的关键。八、补码加法实例分析老师上课举了一个非常经典的例子A 15 B -24我们一步一步计算。第一步写出原码十五00001111负二十四10011000这里最高位是符号位。第二步写出补码正数补码不变。因此15 00001111负数需要取反 1首先10011000数值位取反11100111再加一11101000因此-24 11101000第三步开始相加CPU真正执行的是00001111 11101000逐位相加11110111整个过程中CPU没有任何特殊操作。它只是一直加 一直进位 一直结束第四步解释结果现在得到11110111这是补码。怎么知道是多少需要转回原码。九、补码如何转回原码我们最熟悉的方法是补码 ↓ 取反 ↓ 加一例如11110111取反10001000加一10001001得到负9于是15(-24) -9与数学结果完全一致。十、更快的方法最低位 1 法则老师课上讲了一个非常实用的小技巧。很多同学考试都会用。例如补码11110111不用全部取反。而是从右往左找到第一个1。例如11110|111这就是分界线。规则只有一句话右边保持不变左边全部取反。于是右边111保持。左边11110 ↓ 10001于是得到10001001是不是和刚刚一样速度快得多。因此以后看到负数补码不用每次都取反 1考试直接找最低位1。效率会高很多。十一、为什么补码减法还能继续用加法补码真正厉害的地方其实不是加法。而是减法居然也可以不用减法器。这是CPU设计最精彩的一部分。例如A-B数学里面当然是减法。但是CPU不会这样做。CPU会先变形A-B A(-B)因此真正需要解决的问题只有一个如何快速得到 -B老师课堂上给出的答案非常简单全部位取反 1例如B 00011000变成11101000是不是就是-24于是15-24就变成15(-24)CPU又开始使用同一个加法器。因此整个CPU里面只需要一个加法器。根本不需要减法器。这就是现代CPU设计的重要思想统一硬件。十二、为什么CPU喜欢把减法变成加法如果分别设计加法器 减法器意味着CPU内部需要两套运算电路。不仅面积更大。而且控制逻辑更加复杂。但是如果所有减法都能变成加法那么CPU只保留Adder加法器所有整数运算全部交给它完成。因此CPU设计变简单了。成本降低了。速度更快了。这就是补码最大的工程意义。很多同学学习补码时总觉得“老师规定就是这样。”其实并不是。真正原因是补码最符合硬件实现。十三、补码为什么天然适合计算机如果我们站在CPU设计者的角度来看。希望满足几个条件第一正负数统一表示。第二只设计一个加法器。第三减法自动转换成加法。第四没有0、-0两个零。第五能够方便检测溢出。原码满足不了。反码仍然满足不了。补码全部满足。因此今天所有CPU包括IntelAMDARMApple M系列整数运算全部采用补码。并不是考试规定。而是经过几十年计算机发展后最终形成的最优方案。十四、小练习自己验证一个补码减法假设A 40 B 25要求A-B建议按照下面步骤自己算一遍。① 写出两个数的补码② 求-B③ 做补码加法④ 转回原码⑤ 检查答案是否等于15如果这一步能够自己完整算出来说明补码加减法已经真正理解了。十五、为什么补码运算还需要考虑溢出我们已经知道补码最大的优势在于统一了整数加法和减法的实现方式。对于 CPU 来说无论是执行加法还是减法最终都会转换成补码加法因此整个处理器内部只需要设计一个加法器即可。这种设计极大地简化了硬件结构也是现代计算机普遍采用补码表示整数的根本原因。不过补码虽然解决了运算统一的问题却引入了另一个无法避免的问题——溢出Overflow。很多同学第一次学习溢出时都会觉得它是一个很抽象的概念。其实只要理解了寄存器字长是固定的这一事实溢出的本质就非常容易理解。我们平时在纸上计算时一个数无论有多少位都可以继续往左写。例如计算9999 1 10000如果位数不够我们只需要多写一位即可。但是计算机并不是这样工作的。CPU 中的数据都保存在寄存器里而寄存器的位数在硬件设计时就已经固定好了。例如8 位寄存器只能存放 8 个二进制位32 位寄存器只能存放 32 个二进制位它们不会因为结果变大而自动扩容。以 8 位补码为例它能够表示的数据范围是−128∼127也就是说只要计算结果超过了这个范围CPU 就已经没有多余的位置去保存新的数据了。例如124 15 139从数学角度来看这当然是正确的答案。但是对于 8 位补码而言最大的正整数只能表示到127因此139 已经超出了寄存器能够表示的范围。CPU 在执行加法时仍然会按照既定规则逐位相加但超出最高位的那一位将被直接舍弃最后留下来的 8 位数据已经不能正确表示 139而会被解释成另一个完全不同的补码数。所以我们经常说溢出不是 CPU 计算错误而是寄存器无法保存真正的计算结果。理解这一点之后再去学习各种溢出判断方法就会轻松很多。十六、什么是上溢和下溢既然补码能够表示的数值范围是有限的那么超出这个范围自然会出现两种不同的情况。第一种情况是计算结果超过了补码能够表示的最大正数这种现象称为上溢Overflow Up。例如对于 8 位补码而言120 20 140真正的计算结果应该是 140但是 8 位补码最大的正数只有 127因此最终保存下来的补码会被解释成一个负数。也就是说两个正数相加却得到了一个负数。这就是典型的上溢。第二种情况则是两个负数相加之后结果比最小负数还要小。例如-100 (-50) -150对于 8 位补码来说最小只能表示到 -128因此 -150 同样无法表示。最终运算结束后补码反而会被解释成一个正数。于是便出现了两个负数相加却得到了一个正数。这种情况就称为下溢Overflow Down。很多同学刚开始看到这里都会觉得违背常识但实际上CPU 从头到尾都只是按照补码进行运算并没有任何一步主动判断正负号。当真正的计算结果超出了表示范围之后高位数据被截断剩下的补码自然就会对应到另一个数值。因此无论是上溢还是下溢本质上都不是计算错误而是固定字长计算所带来的必然结果。十七、为什么只有同号相加才可能发生溢出这一点几乎每年考试都会涉及很多同学选择直接记忆同号相加可能溢出异号相加一定不会溢出。其实这个规律完全可以通过数学分析推导出来并没有必要死记硬背。先来看两个正数相加。假设有两个较大的正整数100 80 180如果寄存器只能表示到 127那么 180 很明显已经超出了表示范围因此有可能发生上溢。再来看两个负数-90 (-60) -150由于 -150 已经小于补码能够表示的最小值 -128因此也有可能发生下溢。那么为什么异号相加不会发生溢出呢例如100 (-30) 70或者40 (-90) -50大家可以发现无论哪个数的绝对值更大异号相加本质上都是绝对值相减。计算结果一定会落在两个操作数之间而不会跑到它们之外。例如100 (-30)最终结果只能介于100 和 -30之间不可能突然变成 200也不可能突然变成 -180。因此它根本没有机会超过补码能够表示的范围。所以我们完全可以从数学角度得到一个非常重要的结论只有两个符号相同的数相加计算结果才有可能超出补码表示范围两个符号不同的数相加结果一定不会溢出。这一结论也是后面所有硬件溢出判断逻辑的理论基础。十八、硬件如何判断补码运算是否发生溢出——方法一符号位判断法既然溢出不可避免那么 CPU 必须能够第一时间检测出来否则程序可能会得到错误的数据。老师在课堂上介绍了第一种硬件判断方法——符号位判断法。这种方法的思想其实非常直观。既然我们已经知道正数 正数 得到负数一定发生上溢负数 负数 得到正数一定发生下溢。那么硬件只需要比较三个符号位即可被加数的符号加数的符号运算结果的符号。如果前两个符号相同而结果符号发生了变化那么就说明发生了溢出。例如120 20两个操作数都是正数但结果却变成了负数。显然这种情况在正常数学运算中是不可能出现的因此一定发生了上溢。同样-90 (-50)如果最终结果却变成了正数那么一定发生了下溢。因此硬件实际上只需要判断一种情况两个操作数符号相同而结果符号不同。老师课上给出的逻辑表达式虽然比较复杂本质上描述的就是这一句话。之所以写成逻辑表达式并不是为了增加计算难度而是因为计算机硬件并不会阅读文字它只能识别由与门AND、**或门OR和非门NOT**组成的数字电路。因此这些看似复杂的逻辑表达式其实就是硬件电路的数学描述。从软件开发者的角度来看我们可以把它理解成一个布尔表达式而从计算机组成原理的角度来看它对应的就是 CPU 内部真正实现溢出检测的电路。十九、硬件如何判断补码运算是否发生溢出——方法二最高数值位进位与符号位进位异或法上面的第一种方法本质上是通过符号位的变化来判断是否发生溢出。这种方法思路非常直观也容易理解。但如果站在硬件设计的角度来看仅仅比较三个符号位并不是最高效的实现方式。实际上在 CPU 的加法器中每进行一次加法运算都会自然地产生各种进位信息。这些进位原本就是加法运算的一部分因此设计者想到能不能直接利用这些已经存在的进位信号来判断溢出而不用额外设计复杂的比较电路答案当然是可以这就是第二种方法——进位异或法。1. 什么是最高数值位进位和符号位进位老师在课堂上专门强调了两个容易混淆的概念最高数值位的进位(C_{n-1})符号位向更高位产生的进位(C_n)很多同学第一次接触时总觉得这两个进位很抽象。其实只要画一次竖式加法就很好理解。仍然以 8 位补码为例01111100 00001111 ------------CPU 会从最低位开始逐位相加每一位都可能向左产生进位。当加到最高数值位也就是符号位右边那一位时这一位可能向符号位产生一个进位这就是最高数值位进位。紧接着符号位本身继续参与加法它也可能向寄存器之外再产生一个新的进位这就是符号位进位。很多教材都会画成下面这种形式C_n ↓ S S S S S S S S ↑ C_{n-1}其中(C_{n-1})进入符号位之前产生的进位(C_n)符号位计算结束后产生的进位。理解了这两个进位的位置之后后面的判断规律就非常容易接受了。2. 为什么异或就能判断溢出老师在课堂上给出了一个非常重要的结论当两个进位不同的时候一定发生溢出当两个进位相同的时候一定没有发生溢出。也就是说(C_{n-1})(C_n)是否溢出00否11否01是10是如果学过数字电路就会立刻想到一个逻辑门——异或门XOR。异或运算有一个非常重要的特点两个输入不同输出为 1两个输入相同输出为 0。这恰好与溢出的判断规律完全一致。因此CPU 内部只需要增加一个简单的异或门把两个进位信号连接进去即可。数学表达式写成VCn​⊕Cn−1​其中(V0)表示没有发生溢出(V1)表示发生溢出。很多同学第一次看到这个公式时会觉得它像是老师要求死记的内容。但真正理解之后会发现这其实只是数字电路最自然的一种实现方式。硬件设计者并不是先想到异或再去判断溢出而是因为进位不同这一事实本身就天然符合异或门的工作规律。3. 为什么这种方法更适合硬件如果比较前两种方法我们会发现它们判断的其实都是同一个事实。第一种方法关注的是结果符号是否发生异常变化。第二种方法关注的是加法过程中两个关键进位是否一致。虽然观察角度不同但最终判断结果完全一致。不过从硬件实现来看第二种方法更加高效。原因就在于加法器本身在工作时已经产生了所有进位信息我们只需要把两个进位送入一个异或门即可不需要再额外读取三个符号位进行复杂的逻辑组合。因此在很多实际处理器中进位异或法都是判断补码溢出的经典实现方式也是考试中最常考的一种判断方法。二十、硬件如何判断补码运算是否发生溢出——方法三双符号位模4补码前面两种方法都是建立在单符号位补码的基础上进行判断的。而老师最后介绍的方法则采用了一种更加巧妙的思路——双符号位补码。第一次听到“双符号位”这个词时我也觉得有些奇怪。一个符号位不是已经能够表示正负了吗为什么还要再增加一个符号位其实增加这个符号位并不是为了表示新的信息而是为了更方便地检测溢出。1. 什么是双符号位补码普通补码只有一个符号位。例如00010110表示一个正数。而双符号位补码则把符号位复制一份。正数表示为00xxxxxxxx负数表示为11xxxxxxxx也就是说正数前面一定是00负数前面一定是11。注意这两个符号位并不是两个独立的信息而是完全相同的复制关系。因此它们正常情况下永远保持一致。2. 为什么两个符号位不同就说明发生了溢出这一点其实很好理解。假设两个正数相加。正常情况下结果仍然应该是正数因此两个符号位仍然应该保持00如果运算结束以后却变成了01说明什么说明更高那个符号位认为结果应该还是正数而真正保存下来的结果却已经变成了负数。这正是上溢。反过来如果两个负数相加最终得到10则说明理论上应该还是负数但由于位数不够实际结果却变成了正数。这就是下溢。因此只需要观察最终结果的两个符号位两个符号位相同没有溢出两个符号位不同发生溢出。是不是比前两种方法还直观3. 为什么仍然使用异或到这里大家应该已经发现了一个规律。无论是哪一种方法最后都会回到一个共同点比较两个比特是否相同。第一种方法比较的是三个符号位之间的关系。第二种方法比较的是两个进位。第三种方法比较的是两个符号位。而判断两个比特是否相同数字电路中最简单的方法仍然是异或XOR。因此对于双符号位补码来说只需要把两个符号位输入异或门输出为 0说明两个符号位一致没有溢出输出为 1说明两个符号位不同发生溢出。可以发现虽然三种方法形式不同但底层思想始终保持一致。二十一、模2补码与模4补码到底是什么讲到双符号位补码时老师还提到了两个容易混淆的概念模2补码Mod-2 Complement模4补码Mod-4 Complement第一次看到这两个名字时我还以为是两种新的编码方式。后来才发现它们其实只是不同角度下的命名方式。普通补码只有一个符号位因此又称为模2补码。双符号位补码拥有两个符号位因此又称为模4补码。这里的“模”并不是指普通数学里的取模运算而是与补码表示范围有关。如果把补码看作一种固定长度的循环计数系统那么单符号位补码保留一个符号位因此称为模2补码双符号位补码保留两个符号位因此称为模4补码。对于考研来说并不需要深入推导它们的数学证明只需要知道模4补码就是双符号位补码。这句话基本就足够了。二十二、为什么双符号位不会增加存储空间很多同学学习到这里都会产生一个疑问既然双符号位多了一个符号位那么寄存器是不是也要增加一位答案是否定的。老师在课堂上特别强调了一点双符号位只是在运算过程中临时扩展出来的并不会真正存储到内存中。换句话说内存中保存的数据仍然只有普通补码。只有当 CPU 准备进行运算时才会把原来的符号位复制一份形成双符号位补码参与加法。运算结束之后多出来的那个符号位便失去了作用不会继续保存。因此双符号位补码只是一种运算技巧而不是一种新的存储格式。这一点也是考试中比较容易忽略的细节需要特别注意。结语至此关于定点数和无符号数的加减运算这一部分的内容就全部梳理完了。回顾整个学习过程我最大的感受是计算机组成原理真正难的地方并不是公式多也不是计算复杂而是需要不断转换思维方式。刚开始学习时我们总是习惯站在数学的角度思考问题。例如看到两个正数相加得到负数会下意识地认为计算机算错了看到减法变成加法也会觉得这种做法有些不可思议。但随着对补码、模运算以及硬件实现原理的深入理解我逐渐意识到CPU 并不像人一样“理解”数字它只是严格按照既定的电路规则处理一串二进制比特。所谓的补码、溢出、符号位本质上都是为了让硬件能够以尽可能简单、高效的方式完成整数运算。从原码、反码到补码的发展也让我体会到了计算机设计中的一个重要思想——很多看似复杂的规则都是为了简化硬件实现而产生的。原码虽然最符合人的直觉却需要复杂的符号判断和绝对值比较补码虽然不容易理解却能够把加法和减法统一为一种运算让 CPU 只依赖一个加法器就完成所有整数运算。这种用数学规则换取硬件简单性的思想在后续学习流水线、存储系统、指令系统甚至操作系统时还会不断出现。另外关于溢出的三种判断方法刚开始看似乎互不相关但真正理解之后会发现它们其实都是围绕同一个核心展开判断计算结果是否超出了当前机器字长能够表示的范围。无论是根据操作数和结果的符号位判断还是利用最高数值位进位与符号位进位进行异或亦或是采用双符号位模4补码的方法它们最终都是为了让 CPU 能够快速、准确地发现溢出只是实现角度有所不同而已。而无符号数的加减运算则进一步说明了计算机设计的巧妙之处。虽然有符号数和无符号数在数学意义上完全不同但在底层硬件中它们却可以共用同一套加法器和减法实现逻辑只是在解释计算结果和判断溢出的方式上存在差异。这也让我更加深刻地认识到计算机组成原理不仅是一门介绍硬件结构的课程更是一门研究“如何让有限的硬件完成复杂计算”的学科。对于考研或者课程考试而言这一章节也是重点内容。除了能够熟练进行补码加减运算之外更重要的是理解每一种运算规则背后的原因而不是简单地记忆结论。只有真正理解了为什么计算机要使用补码、为什么减法可以转化为加法、为什么会发生溢出以及为什么能够用这些方法判断溢出后续学习乘除法、浮点数表示、运算器结构等内容时才能做到举一反三而不是每学一个知识点都重新记忆一套规则。最后希望这篇文章不仅能够帮助正在学习《计算机组成原理》的同学理清这一章节的知识脉络也能让大家感受到计算机硬件设计背后的逻辑与美感。很多知识初看复杂但只要理解了设计思想就会发现这些规则并不是人为规定出来的而是在正确性、效率和硬件成本之间不断权衡后的最佳选择。这也正是计算机组成原理这门课程最吸引人的地方。

相关新闻

SEO团队如何改造官网结构,让AI搜索读懂你的品牌?

SEO团队如何改造官网结构,让AI搜索读懂你的品牌?

很多SEO团队最近都有个困惑:官网明明优化得很好,为什么在AI问答里还是搜不到?或者AI给出的答案里,竞品总排在前面?其实,现在的搜索逻辑已经从“关键词爬虫匹配”转向了“自然语言语义推理”。当你向DeepSee…

2026/10/18 3:52:42 阅读更多 →
告别平面图表:AR数据可视化如何重塑商业决策

告别平面图表:AR数据可视化如何重塑商业决策

告别平面图表:AR数据可视化如何重塑商业决策在传统的工业与商业数据分析场景中,决策者往往面临着“数据孤岛”与“认知断层”的双重困境。ERP、MES、SCADA 等系统产生了海量的结构化数据,但这些数据最终大多以二维报表、静态折线图或仪表盘的…

2026/10/17 13:35:53 阅读更多 →
搅拌器需要专人操作吗?一句话讲清合规标准

搅拌器需要专人操作吗?一句话讲清合规标准

不需要持证专人,但分工况需要定岗专人值守。 一、普通工况(食品、日化、水性涂料、常温常压)✅ 无需专属专人、无需考证、可多人轮岗 只需员工经过简单培训,掌握启停规范即可,生产中正常巡检就行,符合安检要…

2026/10/18 4:41:21 阅读更多 →

最新新闻

如何用huggingface_hub一行代码安全加载engagement-predictor模型并做预测

如何用huggingface_hub一行代码安全加载engagement-predictor模型并做预测

【免费下载链接】engagement-predictor 项目地址: https://ai.gitcode.com/hf_mirrors/raviearjun/engagement-predictor 点击查看 免费下载 engagement-predictor 是一个基于 scikit-learn Ridge 回归的社交媒体互动预测模型,可通过 huggingface_hub 一…

2026/10/18 4:41:33 阅读更多 →
剪枝后还能打吗?Ornith-1.5-35B-A3B-OptiQ-4bit-REAP-19B质量损失深度解析:KL 0.331与基准实测数据

剪枝后还能打吗?Ornith-1.5-35B-A3B-OptiQ-4bit-REAP-19B质量损失深度解析:KL 0.331与基准实测数据

大模型人工智能模型压缩模型量化本地部署 【免费下载链接】Ornith-1.5-35B-A3B-OptiQ-4bit-REAP-19B 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Ornith-1.5-35B-A3B-OptiQ-4bit-REAP-19B 点击查看 免费下载 Ornith-1.5-35B-A3B-OptiQ-4bit-REAP-…

2026/10/18 4:41:33 阅读更多 →
设备安全---IP防护

设备安全---IP防护

在工业电气设备、光电传感器、编码器、伺服电机、工业连接器、控制箱等产品的规格参数中,IP防护等级是出现频率最高的指标之一。 IP防护等级是一套外壳防护能力的编码体系,而非单一的强度指标。当前通用电气设备执行的标准为IEC 60529:2013(合…

2026/10/18 4:41:33 阅读更多 →
清理记事本:从信息筛选到知识管理的系统化实践

清理记事本:从信息筛选到知识管理的系统化实践

1. 从“清理记事本”这个动作说起:为什么一个看似简单的需求值得认真对待很多人第一次看到“清理记事本”这个标题,第一反应是:这有什么好讲的,不就是把记事本里的内容删掉、整理一下吗?但如果你真正长期使用记事本类工…

2026/10/18 4:41:33 阅读更多 →
Flutter引导页实战:PageView+Indicator实现动态指示器与状态持久化

Flutter引导页实战:PageView+Indicator实现动态指示器与状态持久化

我曾经和朋友讨论过一个问题:在 Flutter 里实现一个 App 首次启动的引导页,到底是不是只用 PageView 就能搞定?答案当然是否定的。真正把一个引导页做得完整、顺滑、可维护,背后其实还牵扯到页码监听、指示器动画、按钮状态管理、…

2026/10/18 4:41:33 阅读更多 →
主从博弈下综合能源微网需求响应优化调度模型全解析

主从博弈下综合能源微网需求响应优化调度模型全解析

第一次看到“基于主从博弈的综合能源微网需求响应优化调度模型”这个题目,很多人会把它当成一个普通的优化调度问题来读:目标函数、约束条件、求解器一跑,出结果就完事了。但我实际调过这类模型之后发现,真正难的不是数学工具&…

2026/10/18 4:40:33 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →