计算机组成原理 new08 电路 $\color{red}{Δ}$

news2024/11/17 1:46:05

文章目录

        • ALU
        • 基本逻辑运算
        • 复合逻辑的运算
      • 一位全加器
      • 串行加法器
      • 串行进位的并行加法器
        • 并行进位的并行加法器(全先行进位加法器)
        • 这个明天再写。
        • 加法电路原理总结
        • ALU和加法器有什么关系
        • 加法器原理
        • ALU总结
        • 无符号整数/补码加减法加法器
        • 标志位的生成
        • 补码加减法发运算的溢出判断
        • 溢出电路判断总结
        • 溢出和真值的关系

在这里插入图片描述

ALU

在计算机中,二进制数据的运算和传输都是使用高低电平信号来进行传输的,高电平代表二进制的1,低电平代码二进制的0

ALU:ALU是一种组合逻辑电路,能够进行算术运算和逻辑运算,因为加减乘除都能转换成加法的运算,所以ALU核心带标志加法器(实际上加法器内部的运算又都是采用的逻辑运算为基础)。在ALU中,有两个输入端输入高低电平信号(即操作数),一个输入端输入CU发送的控制信号,一个输出端输出信号(运算的结果)。
在这里插入图片描述
实际ALU的物理结构是这样的:

在这里插入图片描述
其中 B 0 − B 3 \color{red}{B_0-B_3} B0B3 4根线可以输入4个信号,即4bit的二进制信息,作为ALU的第一个操作数
同样 A 0 − B 3 \color{red}{A_0-B_3} A0B3 4根线可以输入4个信号,即4bit的二进制信息,作为ALU的第二个操作数
机器字长就是ALU的宽度,即ALU输送操作数使用的数据线的条数,图中ALU的宽度为4,即机器字长为4
M用于传输CU发送的控制信号,M=0表示算术运算,M=1表示逻辑运算。
S 0 − S 3 \color{red}{S_0 -S_3} S0S34根数据线,每次可以传输4bit的信息,所以最多可以表示16个不同的状态。即每个类型的运算支持的种类,例如M=0,即支持16种算术运算。
其中 F 0 − F 3 \color{red}{F_0-F_3} F0F3 4根线输出运算的结果

基本逻辑运算

事实上,计算机中的运算大多是由逻辑运算为基础完成的。
在这里插入图片描述
逻辑运算和普通的加减法一样支持分配律和结合律
在这里插入图片描述
逻辑运算中使用分配律和结合律有什么意义?

对电路进行简化,减少成本。
例如:
在这里插入图片描述

复合逻辑的运算

在这里插入图片描述
其中异或门可由与或非门组成,并且异或门常用于实现加法和奇偶校验:
在这里插入图片描述

一位全加器

在这里插入图片描述

本位和:本位和=当前位的操作数1+当前位的操作数2加上前一位的进位信息。

串行加法器

当串行加法器只有一个全加器的时候就可以看作是全加器。

构成:串行加法器由一个一位全加器组成。

特点:进位信息串行传输,当前位的进位信息需要等上一位运算完以后才能获取,并且每次只能输入两个操作数

运行原理如下:
C i \color{red}{C_i} Ci每次存储前一位的进位信息,当进行运算的时候 C i \color{red}{C_i} Ci会将前一位的进位信息传输给 C i − 1 \color{red}{C_{i-1}} Ci1 C i − 1 \color{red}{C_{i-1}} Ci1 A i , B i \color{red}{A_i,B_i} Ai,Bi进行当前位的运算,然后再将运算的结果从 S i \color{red}{S_i} Si输出并将进位信息输出给 C i \color{red}{C_i} Ci
在这里插入图片描述

串行进位的并行加法器

构成:串行进位的并行加法器由多个一位全加器构成,也叫做串行进位加法器,其中串行进位又叫做行波进位。这里说的串行进位就是进位信息的串行运输的。

运行原理如下:当前位的进位信息会通过数据线传送到下一位参与运算。

特点:进位信息串行运输,当前位的计算需要等待上一位计算完成并且传输进位信息才能开始,因为有多个全加器所以可以并行的同时输入所有的操作数。因为串行进位的并行加法器中加法器的数量有限,所以最终最高位的进位是被舍弃的,所以这个实际上就等于是一个模 2 n \color{red}{2^n} 2n的加法运算,即结果最多只能有n位。

特点:因为高位的计算收到低位进位信息的限制,所以运算时间主要是由进位信息的传递时间决定的,位数越多就会导致延迟时间越长(这里的延迟应该理解为后面的加法器需要等待进位信息的时间),全加器本身对于本为和计算速度或者延迟是可以忽略的。所以关键是提高进位的产生速度和进位信息的传递速度
在这里插入图片描述

并行进位的并行加法器(全先行进位加法器)

并行进位的并行加法器可以看作是串行进位的并行加法器的一个优化:
在串行进位的并行加法器中,当前位的运算需要等待前一位完成才能开始执行,其进位信息是从前往后逐步进行传输的,这就会导致后面的全加器很大的一段时间中都是空有数据,没有进位信息,即是处于空闲状态的,而并行进位的并行加法器正是对进位信息这一环节进行了优化,并行进位的意思就是进位信息并行产生。

优化思路:
我们知道,我们是根据逻辑表达式得出当前的进位信息,而当前的进位信息依赖上一位的进位信息,我们对进位信息的表达式完全展开可以发现一个规律:
处于 B i \color{red}{B_i} Bi A i \color{red}{A_i} Ai位置的全加器,只需要依赖 A 1 − A i − 1 \color{red}{A_1-A_{i-1}} A1Ai1 B i − B i − 1 \color{red}{B_i-B{i-1}} BiBi1加上 C 0 \color{red}{C_0} C0就可以得出 A i \color{red}{A_i} Ai位置需要的进位信息,而 A 1 − A n , B 1 − B n \color{red}{A1-An,B1-Bn} A1AnB1Bn还有 C 0 \color{red}{C_0} C0我们都是一开始就已知的,所以这样一来可以根据表达式提前算出每个全加器需要的进位信息。

运行原理:我们可以使用CLA部件完成上述进位信息的计算,假设操作数为4位的长度,那么我们就可以使用4CLA部件完成上述进位信息的计算。从图中我们可以看出,我们先将所有的操作数共同送入对应的加法器,并且将 C 0 \color{red}{C_0} C0 \color{red}{} 送入第一个加法器和CLA内部。所有的加法器在内部先计算出自己的 G i \color{red}{G_i} Gi P i \color{red}{P_i} Pi,然后将 G i \color{red}{G_i} Gi P i \color{red}{P_i} Pi送入CLA内部,最后CLA对这些数据进行整合,算出所有加法器需要的进位信息,同时输送到加法器内部。( G i \color{red}{G_i} Gi P i \color{red}{P_i} Pi的运算不依赖进位信息,所以可以先在加法器内部完成)。

注:CLA也叫做先进进位(超前进位)部件。

特点:因为通过表达式的优化,每个全加器需要的进位信息只和 B i \color{red}{B_i} Bi A i \color{red}{A_i} Ai C 0 \color{red}{C_0} C0有关,所以相互间的进位没有依赖关系,只要所有操作数 B i \color{red}{B_i} Bi A i \color{red}{A_i} Ai C 0 \color{red}{C_0} C0同时到达,CLA就几乎可以同时算出进位信息,并且将进位信息传输到对应的加法器内部,每个加法器可以同时生成自己的对应位的结果。进位方式快速,得到进位信息的速度和操作数的长度无关。(这个不好理解,对此我们应该以正常情况下正常的操作数长度进行理解)
在这里插入图片描述
在这里插入图片描述
对于进位的式子,我们还需要进行一些剖析,当前位是否产生进位有两种可能:
1. A i 和 B i \color{red}{A_i和B_i} AiBi都是1,我们将其记作 G i \color{red}{G_i} Gi,我们将其叫做进位产生信号。
2… A i 和 B i \color{red}{A_i和B_i} AiBi其中有一个是1,然后前一位的进位是1。所以如果要满足第二个条件,那么就需要 A i \color{red}{A_i } Ai^ B i \color{red}{B_i} Bi=1,将其记作 p i \color{red}{p_i} pi,将其叫做进位传递信号。
C i \color{red}{C_i} Ci的进位,需要 p 1 − p i , G 1 − G i 和 C 0 \color{red}{p_1-p_i,G_1-G_i和C_0} p1pi,G1GiC0才能算出。

注意:当并行进位的并行加法器支持的操作数长度越长时,就需要更多的进位信息,就会导致后面处理进位信息的表达式越来越复杂,即内部电路实现更加复杂。所以一般来说支持操作数长度最长为4的并行进位的并行加法器可以完成进位信息的同时输入,进位信息同时输入到对应的全加器位置上。

虽然说,全进位加法器(并行进位的并行加法器)收到操作数位数的限制,但是我们依旧有解决方法,可以使用串联的方式将全进位加法器进行串联,例如串联两个4位全先行进位加法器,通过这样的方式,我们可以达到:组内进位并行传输,不同组的进位信息串行传输,只不过后面的组需要等前一组算完进位信息并且传输过来,才能开始计算。
在这里插入图片描述
如果想要更快,可以采用两级或者多级先行进位加法器

这个明天再写。
加法电路原理总结

实际上在计算机中,加法和减法都是通过加法电路完成的,而加法电路的本质是使用异或门来完成,异或可以采用与或非电路完成。

ALU和加法器有什么关系

我们说了这么多加法器和ALU,两者的联系是什么?
ALU叫做算术逻辑单元,其能够实现逻辑运算和算术运算。可以将其看作是一个大盒子,里面可能有加法器进行加法运算,减法器,等等部件。而ALU就是存储这些运算部件的一个盒子。
但是需要非常注意的是,ALU是一个包含了加法器之类的集合,但是这个集合里面没有寄存器!这个非常重要,寄存器都是在ALU内部的,ALU没有存储功能!在某些情况下,移位操作可能是在ALU内完成,也有可能是在ALU外的移位寄存器内完成。并且ALU不是一定要进行运算,ALU也可以做为一个中间介质,进行数据的流动,例如MDR的数据可能需要通过ALU流动到其他寄存内。
在这里插入图片描述

加法器原理

一个普通的加法器模型如下,其内部具体是全加器,还是并行进位的并行加法器,或者是其他细分类型的加法器,应该都是可以的。

在这里插入图片描述
这种加法器原理如下:
1.加法器右端
加法器右端会cin输入一个低位的进位。这里的进位应该和我们前面说的进位信息分开,因为这个进位可能不只是进位信息这一层含义,其可能还具有其他含义,例如使用这个进位可以完成求补的部分操作。这个进位参与最低位的运算。
2.加法器左端
左端会输出运算以后,最高位的进位。这个进位可能是进位信息,也有可能具有其他的含义,例如这个进位可以作为判断数据计算是否有溢出等等。
举个例子:
在这里插入图片描述
因为这种加法器具有的特性,所以有时候我们可以将两个加法器进行拼接,达到扩展功能。例如:
在这里插入图片描述
所以通过这种扩展的功能可以用于并行进位的并行加法器,即每个4位,然后进行扩展,就能更好的发挥并行进位的并行加法器的功能,这个实际上就是我前面说的并行进位加法器的串联。

ALU总结

ALU内没有寄存器,ALU没有存储功能,所以ALU内没有寄存器这些东西,所以ALU需要搭配外部的寄存器完成运算功能。

无符号整数/补码加减法加法器

这里为什么我们没说原码和反码,

因为原码和反码的符号位不能参与运算,我们接下来的计算是需要符号位参与的。

这里的说的加法器可以除了可以完成有符号补码整数和无符号整数的加减运算,可以完成有符号补码小数的加减法运算吗?

可以的,因为计算机内部并没有设置小数点,小数点是人为的,所以计算机内部运算的时候只关心数据的符号位和数值位

   ( 1 ) (1) (1)补码加减法加法器

补码加减法加法器实际上是在上一个加法器的基础上,添加了一些玩意制造成的,其模型如下:
运行原理如下:
1.CU会发送一个sub控制信号至cin和多路选择器。当执行加法时信号为0,减法信号为1
2.XY为两个操作数的输入端口,多路选择器会根据信号为01选择导通的线路,被加数可以直接从X端口输入到达加法器,加数Y只能通过多路选择器中导通的接口达到加法器内。

对此我们分为补码加法和补码减法:
   ( 1 ) (1) (1)补码加法

因为补码加法可以直接执行,所以执行过程很简单:
1.通过XY输入被加数和加数,不知道是不是CU发送0sub信号给多路选择器和cin,多路选择器收到信后导通0号线路让加数进入加法器,最后在加法器内部进行运算即可。

   ( 2 ) (2) (2)补码减法

补码减法比较特殊,需要对减数进行求补,并且让减法变成加法。求补的本质操作数是所有位按位取反,末尾加1,因为多路选择器和cin的存在,当执行减法时,减数在参与运算的时候会完成求补这一操作,现在我们来看下具体原理:
1.通过XY输入两个操作数,不知道是不是CU发送1sub信号至cin和多路选择器。多路选择器导通1号线路,在多路选择器的1号线路中有一个非门,其会对被减数进行全部位取反,所以减数到达加法器内部时,求补工作已经完成一半,随后因为cin会参与最低位的运算,并且cin1,所以求补需要的所有工作全部完成,即可开始正常的运算。
在这里插入图片描述
   ( 2 ) (2) (2)无符号整数加减法加法器
事实上无符号整数的加减法和补码加减法采用相同的加法器,因为两者的运算逻辑都是相同的,加法时直接按位相加即可,减法都是进行减数求补 ,然后减法变加法,所以两者的本质运算逻辑相同,所以这个加法器适用于无符号整数的加减法。但是需要注意的是因为无符号整数和补码的区别,两者的解释方式和进位溢出的判断方式具有差别,例如:
下面输入了两组操作数进行运算,最终得到的二进制序列相同,但是因为无符号整数和补码的特性不同,导致两者的运算结果出现了差异:
在这里插入图片描述
所以可以得出结论:
无符号整数和补码进行加减法时可以使用同一套电路主体,但是解释方式和溢出标志位等判断一定存在区别。

标志位的生成

前面我们说了,补码的加减法和无符号数的加减法可以使用同一套电路,但是因为两者的特性不同,对于溢出的判断和数据运算结果的解释和判断一定需要不同的处理机制,而在计组中,底层使用了标志位来分别进行判断:
事实上,加法器在运算以后不仅要输出运算的结果还有cout,还需要输出4个标志信息,分别是OF,SF,ZF,CF
需要注意的是:无论是有符号整数的运算还是无符号整数的运算都需要输出这4个标志位的信息,但是标志信息是否具有意义就需要根据数据的类型即有符号或者无符号来进行决定。
在这里插入图片描述
现在我们给出四个标志位的计算方式:
在这里插入图片描述
现在我们开始验证为什么能够通过上述的方式判断数据是否溢出,为正数还是负数,是否溢出/借位。
首先在验证之前,我们需要明确一个知识点:

什么叫做溢出?

事实上,溢出指的是n位数值能够表示的范围溢出,例如nbit位可以表示最大的数字是127,这时结果出现了128,这时就叫做溢出,但是需要注意的是比特位的溢出并不一定代表数值的溢出,这是非常需要注意的,所以我们这里的OF溢出,实际上验证的数值是否溢出范围。

   ( 1 ) (1) (1)OF判断溢出的根据

首先,有符号的计算中,无论是什么加法运算还是减法运算,最后都被转换成了加法运算,首先需要知道的是,在将减法转换成加法的这个过程中,求补动作的比特位溢出是否会对减数具有影响,既然是减数比特位溢出,那就只有一种情况,即减数是全0,只有如此在经过求补以后才会比特位溢出,当减数全0时0,经过求补以后,得到的依旧是全0,因为0的真值就是0,全0对被减数不产生任何影响,所以这个比特位溢出对于接下来的运算是没有影响。所以除0以外的正数求补后一定是负数,负数求补以后一定是正数,虽然0作为例外,但是0对于运算不会产生影响,所以可以不用管。

在明白了这个以后,开始列举补码计算可能会出现的情况
所以一共会出现以下四种情况:
正数+正数
正数+负数
负数+正数
负数+负数

其中正数+负数和负数+正数因为是正常的计算,所以一定不会溢出。
所以只有可能正数+正数和负数+负数的这个过程产生溢出。

现在我们对这两种情况再次进行分析:
首先因为是正数+正数,所以cout位的进位一定是0,因为一开始两个正数的符号位都是0,所以即使次高位的进位是1,cout位的进位也一定是0。所以也就是说在正数+正数中,cout位的进位一定是0,所以如果数据发生溢出,根据OF的运算原理,那么次高位的进位就需要是1。我们看下如果次高位的进位是1会发生什么。按正常情况下,没有溢出的情况来说,正数+正数得到的符号位必须是0,因为补码的最高位代码符号位。一旦符号位出现1,则说明结果变成了负数,而这个1一定是次高位的进位。所以说在正数+正数中,一旦COUT^次高位进行=1,则说明数值发生了溢出。

分析完正数以后,负数就简单了,负数+负数时,cout位的进位一定是1,因为两个负数相加,最高位都是1,那么就会发生进位1,如果次高位不产生进位1,就会导致结果中最高位是0,0代表正数,而负数+负数不可能得到正数,所以说如果不溢出,要求次高位的进位一定是1。

所以我们可以总结出结论:
正数+正数:不溢出的情况下,cout和次高位进位都等于0
负数+负数:不溢出的情况下,cout和次高位进位都等于1
所以一旦cout^cin=1,则说明发生了溢出。

溢出以后,结果是怎么样的?

如果是两个正数溢出,那么结果是负数
两个负数溢出,结果是正数。

   ( 2 ) (2) (2)CF判断溢出的根据
CF溢出判断的公式是:cout^sub

CF本质是无符号整数使用的,所以CF也只有两种可能会溢出:

因为在无符号中只有正数的概念:
1.正数+正数
当最高位进位为1时表示溢出,这很好理解,两个正数最高位产生进位了那就是说明存不下了。
而进行加法时,sub=0,所以只要最高位有进位,那就是溢出了。

2.正数-正数
在CF中,对于正数-正数判断溢出我们不需要对减法变成加法,只要判断被减数和减数哪个大即可,被减数小即发生溢出。在减法中,sub为1,那就说明只要进位是0,就发生了溢出,我们思考下是为什么?
我们模拟下不溢出的情况下:
1001
0100

被减数:1001
求补:1100
我们可以看出相加以后最高位的进位肯定是1。

补码加减法发运算的溢出判断

   ( 1 ) (1) (1)
其实本质也是OF,因为只有正数+正数和负数+负数才可能溢出,所以只需要判断计算前的操作数符号和计算后结果的符号是否相同即可知道有无溢出,相同表示没有溢出,不同表示溢出。当采用一位符号位时,计算机会保留原操作数的符号信息,然后根据得到结果的符号,将两者进行异或
在这里插入图片描述
   ( 2 ) (2) (2)
前面说的是OF的本质,这里说的就是OF的判断方法。和前面本质都是一样的。
在这里插入图片描述
其在计算机底层同样也是采用的异或,将最高有效位的进位和符号位的进位进行异或。
   ( 3 ) (3) (3)
在这里插入图片描述
根据溢出的结论:只有两种可能会导致溢出:
   ( 1 ) (1) (1)正数+正数

00+00=00,在OF中,次高位的进位一定是0,这样才是没有溢出,所以在双符号位中也是如此,这时次高位是第三位,因为多了一个符号位,但是同样是符号位后的一位。入宫该位的进位是1,就说明溢出 ,00就会变成01。

   ( 2 ) (2) (2)负数+负数

11+11=10,在OF中,如果负数+负数不溢出,符号位后一位的进位必须是1,如果是1最终得到的符号位就是11,不然就是10说明符号位的进位不是1,说明溢出了。
在计算机中,对于双符号的溢出判断,也是采用异或的,将两个符号位进行异或即可知道是否有发生溢出。

计算机中是如何存储双符号位的?

首先需要知道的是,在计算机中是只存储单符号位的,因为双符号位中两个位的符号相同,所以在存储的时候只需要存储一个,在进行计算的时候,ALU会保存其中一个符号位,然后使用计算结果和保留下来的符号位进行异或判断。

双符号位是如何完成算术移位的?

因为计算机中实际不存储双符号位,只存储一个符号位,所以在进行移位的时候只有次高位的符号位即单符号位参与移位。

溢出电路判断总结

前面说的三种溢出电路,本质都是使用异或来进行溢出判断的。

溢出和真值的关系

因为只有补码的符号位可以参与运算,所以这里我们只需要考虑补码。

只有两种运算会溢出:
正数+正数
负数+负数

这两种情况可能由两个状态迁移而来:
这两个状态是真值原本的状态,但是因为计算机的减法都变成了加法
正数-负数
负数-正数
所以两个状态变成了
正数+正数和负数+负数
而在真值中,正数-负数得到的也是正数+正数,负数-正数本质也是负数+负数。
所以补码的计算方法和真值是严格对应的,所以在有真值的前提下可以使用真值来判断是否溢出,例如下面这题:
在这里插入图片描述
8位补码可以表示最小数和最大数分别是-128,127。
所以可以直接计算每个选项的真值,然后判断是否落在区间内。
结果是x-y=103+25=128,不在区间内,所以溢出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1118861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python实现一个简单的http服务,Url传参输出html页面

摘要 要实现一个可以接收参数的HTTP服务器,您可以使用Python标准库中的http.server模块。该模块提供了一个简单的HTTP服务器,可以用于开发和测试Web应用程序。 下面是一个示例代码,它实现了一个可以接收参数的HTTP服务器: 代码…

C1N短网址 - 是如何做到行业领先的

今天从技术角度来聊下短网址的一些事情,市面上的短网址发展基本上经历了几个阶段。 短网址发展的几个阶段: 第一阶段:网址缩短,很纯粹的功能,各个大小公司都在做,门槛很低。典型代表:百度短网…

Python+playwright 实现Web UI自动化

实现Web UI自动化 技术:Pythonplaywright 目标:自动打开百度浏览器,并搜索“亚运会 金牌榜” 需安装:Playwright (不用安装浏览器驱动) # 使用浏览器,并可视化打开 browser playwright.ch…

Power BI 傻瓜入门 3. 选择Power BI的版本

本章内容包括: Excel与Power BI的比较选择Power BI的桌面版和服务版之间的差异了解Microsoft提供的许可选项 挑选正确版本的Power BI可能就像参观世界上最大的糖果店:你可以从许多细微差别的替代品中进行选择。选择可以归结为想要、需要、规模&#xf…

用HFSS仿真平面线圈的电感量

用HFSS工具仿真平面线圈的电感量 平面线圈是指在平面上绕制而成的线圈,如PCB上的电感线圈、无线供电使用的金属丝绕制而成的线圈等。根据线圈的不同形状可将平面线圈分为方形线圈,六角形线圈、八角形线圈、螺旋原型线圈等。 网络上的计算平面线圈电感量…

Tmux:终端复用器的基本使用(二)

相关阅读 Tmuxhttps://blog.csdn.net/weixin_45791458/category_12472796.html?spm1001.2014.3001.5482 上一篇文章列举了一些关于tmux中会话的基本使用方法,但会话并非是tmux的最强大的功能,tmux还能在一个会话中创建多个窗口(windows),并…

springboot配置打野sql语句,而不打印结果

application.yml,注释掉mybatis-plus,增加logging,级别debug

【暴力剪枝】CF1708D

https://codeforces.com/contest/1708/problem/D 题意 思路 这样的操作下,数列减的速度是非常快的,也就是说,易出现很多的0,0的操作没啥意义,所以我们要找到第一个 >0 的数对其后的序列进行排序,就能大…

Vue中的路由是如何工作的?Vue Router的基本用法。

在Vue中,路由是用于管理应用程序中不同页面之间导航的机制。 Vue Router是Vue.js官方提供的路由管理器,它通过集成到Vue应用程序中,提供了一种简单而强大的方式来实现单页应用程序(SPA)的路由功能。 以下是Vue Router的基本用法: 1:安装Vue Router: 首先,使用npm或…

二维码智慧门牌管理系统升级解决方案:地图展示

文章目录 前言一、地图展示功能二、其他升级和改进 前言 随着城市的发展和信息化建设的推进,二维码智慧门牌管理系统在社区管理、物流配送、巡检巡查等多个领域发挥着越来越重要的作用。为了更好地满足用户需求,提升管理效率和服务质量,我们…

【JavaEE重点知识归纳】第9节:抽象类和接口

目录 一:抽象类 1.概念 2.语法 3.特性 4.作用 二:接口 1.概念 2.语法 3.接口使用 4.特性 5.实现多个接口 6.接口间的继承 7.Comparable接口 8.Clonable接口 9.抽象类和接口的区别 一:抽象类 1.概念 (1&#xff0…

【C++】类型转换(dynamic_cast,const_cast,static_cast,reinterpret_cast)

🌏博客主页: 主页 🔖系列专栏: C ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 文章目录 C语言中的类型转换一、static_cast二、reinterpret_cast三、 const_cast四、 dynamic…

xlive.dll下载安装方法分享,教你快速修复xlive.dll文件

在运行某些应用程序或游戏时,你可能会遭遇到"xlive.dll缺失"错误提示,这可能导致程序无法正常运行。本文将向你介绍一些可行的解决方法教你下载xlive.dll文件,并详细阐述xlive.dll是什么文件以及导致其缺失的原因。 一.理解"x…

2023-10-19 指针与指针的指针,我就不信你脑壳不疼

点击 <C 语言编程核心突破> 快速C语言入门 指针与指针的指针&#xff0c;我就不信你脑壳不疼 前言一、从一个链表实现说起二、指针, 指针的指针, 头疼的来源总结 前言 C实现一个链表&#xff0c;为什么有时候传入指针&#xff0c;有时候传入指针的指针&#xff0c;究竟…

编程接口:eBPF 程序是怎么跟内核进行交互的?

目录 背景 BPF 系统调用 BPF 辅助函数 BPF 映射 BPF 类型格式 (BTF) 小结 背景 用高级语言开发的 eBPF 程序&#xff0c;需要首先编译为 BPF 字节码&#xff0c;然后借助 bpf 系统调用加载到内核中&#xff0c;最后再通过性能监控等接口与具体的内核事件进行绑定。这样&…

VNC Viewer安装教程(保姆级安装)

一、 VNC Viewer简介 VNC是一款开源的远程控制软件&#xff0c;功能强大且高效实用&#xff0c;其性能不逊色同类软件&#xff0c;它的工作原理和WIN远程控制软件类似&#xff0c;但是更为重要的是&#xff0c;VNC-Viewer完全免费开源&#xff0c;更新速度也比较快&#xff01;…

解释CSS伪类和伪元素的区别,并举例说明。

CSS伪类和伪元素是用于选择HTML文档中特定元素或元素的部分内容的CSS选择器。它们的区别在于它们所选择的目标不同。 CSS伪类&#xff08;Pseudo-classes&#xff09;是用于选择符合特定状态或特定条件的元素。伪类以冒号&#xff08;:&#xff09;开头&#xff0c;用于选择元…

【VSCode】解决Open in browser无效

问题描述&#xff1a; 在VSCode中无论是点击右键&#xff0c;选择在默认浏览器中打开&#xff0c;还是按快捷键alt b都没有反应。 解决办法&#xff1a; 右击文件 --> 在文件资源管理器中显示 右击文件&#xff0c;选择属性 点击更改 选择用默认浏览器打开 最后 此时…

Redis 命令—— 超详细操作演示!!!

内存数据库 Redis7 三、Redis 命令3.1 Redis 基本命令3.2 Key 操作命令3.3 String 型 Value 操作命令3.4 Hash 型 Value 操作命令3.5 List 型 Value 操作命令3.6 Set 型 Value 操作命令3.7 有序Set 型 Value 操作命令3.8 benchmark 测试工具3.9 简单动态字符串SDS3.10 集合的底…

Whisper 整体架构图

Attention 注意力机制模块&#xff0c;兼容自注意力和交叉注意力。 AttentionBlock Transformer 模块&#xff0c;包含一个自注意力&#xff0c;一个交叉注意力&#xff08;可选&#xff09;和一个 MLP 模块。 AudioEncoderTextDecoder 音频编码器和文本解码器。编码器的 Tr…