自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 计算机组成原理 | 储存子系统(1)概述

三级储存体系物理与虚拟存储器(抽象逻辑模型)存储器类型存储器的速度指标。

2024-07-02 15:26:22 223

原创 计算机组成原理 | CPU子系统(5)提高CPU性能的高级技术

2024-07-02 15:09:36 110

原创 计算机组成原理 | CPU子系统(4)MIPS32架构-单周期处理器设计

ALU控制器(2)-aluop编码。继续整合通路:MUX多路选择器。微命令控制:将指令转换为微命令。ALU控制器(1)-输入与输出。ALU控制器(3)-输出逻辑。ALU控制器(3)-真值表。硬连接控制方式:依靠电路。主控单元(2)-输出逻辑。控制系统的两级控制方案。主控单元(1)-真值表。I型访存指令数据通路。控制信号的整理和编码。

2024-07-02 15:00:06 133

原创 计算机组成原理 | CPU子系统(3)MIPS32指令架构

MIPS32架构指令格式。MIPS32架构寻址方式。

2024-06-26 19:29:53 268

原创 计算机组成原理 | CPU子系统(2)指令系统

J型:跳转型(address以立即数的形式给出)格式规整,高六位都是操作码,寄存器编号都是五位。CISC和RISC指令集。R型:寄存器型(四地址)I型:立即数型(三地址)PC相对寻址、页面寻址。指令的基本功能和类型。

2024-06-25 20:27:47 173

原创 计算机组成原理 | CPU子系统(1)基本概述

外频(系统时钟信号),是计算机所有时序信号的基准。三个操作靠外部时钟信号的驱动来实现协同。三个操作靠相互之间的控制信号来实现协同。cpu是大脑,控制器是神经元。①通过硬件产生控制信号。②通过软件产生控制信号。

2024-06-24 20:13:17 163

原创 计算机组成原理 | 数据的表示、运算和校验(4)基本运算方法

以上描述犯的错误是-Y的意思是例如将1变为-1,而不是将0 0001变为1 0001。-Y不是说将Y的补码的符号位变反,而是说将真值取相反数后再用补码表示。[Y补]变补:先求Y的补码(数字为变反加1),在求Y补的变补(Y补的符号位和数字位一起变反,再加1)算的时候要依据下面这张图的规则,[E2]移 求补,再与[E1]移相加,再符号取反。(-Y)补:先将Y的符号位置反,在求-Y的补码(数字为变反加1)[-6]移 求补,再与[-7]移 相加,再符号取反。[5]移 求补,再与[-3]移相加,再符号取反。

2024-06-24 19:01:59 208

原创 计算机组成原理 | 数据的表示、运算和校验(3)数据处理与存储

不按边界对齐,访存次数会增加一次。

2024-06-22 16:06:08 158

原创 计算机组成原理 | 数据的表示、运算和校验(2)字符型数据

2024-06-22 15:43:01 86

原创 计算机组成原理 | 数据的表示、运算和校验(1)数值型数据

这里对于原码和补码规格化以后位数的最高位为什么有特殊规律,对这个规律不是很理解。说到底还是不知道小数点后数值的大小是怎么用二进制算出来的。(从带符号的定点小数那里就有点懵了)有了一个二进制代码,首先要知道他是带符号的还是不带符号的,接着要知道他是原码还是补码还是反码,最终才能确定他的真值。定点小数没有很理解:为什么有一个“1 - ...”2.059375用小数表示为.10011是怎么算的。对于补码而言:10000000表示 -128。对于反码而言:10000000表示-127。对移码的概念和作用不清楚。

2024-06-22 15:35:34 241

原创 计算机组成原理 | 计算机系统概述

对CPU来说,在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟周期 是一个时钟脉冲所需要的时间。时钟频率越高,时钟周期就越短,工作速度也就越快。时钟周期在CPU的描述里也叫节拍,即将一个机器周期划分成若干个相等的时间段,每一段仅完成一个基本操作,用一个电平信号宽度对应。CPI:(Clockcycle Per Instruction),指每条指令的时钟周期数。

2024-06-21 21:24:29 235

原创 第五十一天 | 1143.最长公共子序列

如果text1[i - 1] 与 text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列,取最大的。如果text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以dp[i][j] = dp[i - 1][j - 1] + 1;即:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);

2024-06-13 18:19:40 312

原创 Python(完结)| 图形的面积

之后我们创建了一个包含不同类型的图形对象的列表shapes,然后循环遍历该列表并调用calculate_area方法,景观调用的方法时根据对象的类型动态确定的,这其实就是多态的概念。方法设置属性,如果希望属性是只读的,则可以直接去掉setter方法,如果希望属性不能被外部访问,则可以直接去掉getter方法。,就好像,当父亲和儿子都拥有一样东西,会优先使用自己的,如果发现自己没有,才会使用继承的方法。在上面的示例代码中,图形类拥有两个属性和一个方法,圆的类在图形类的基础上添加了半径这个属性。

2024-06-08 14:52:35 304

原创 Python | 排队取奶茶

由此可见,在列表中,如果直接pop(),那么将会弹出列表的最末尾一个值;而如果pop(0),那么将会弹出列表中的第一个元素。提供了多种队列的实现,比如普通队列和优先级队列,因此你可以使用。类来创建队列,不过我们依旧可以使用列表来模拟队列的实现。在 Python 语言中,标准库中的queue。

2024-06-07 20:47:24 2207

原创 Python | 洗盘子(栈)

Python 语言确实支持栈数据结构,但它通常是通过。

2024-06-07 20:22:47 215

原创 Python | 开房门(map)

表示这是一个空字典,而并非一个空集合。创建字典,如果想要给字典添加键值对,可以直接通过。来包裹(set也是{}),每个键值对用冒号。这个视图象可以用于迭代字典中的键值对。称之为映射,就是将一个元素(通常称之为。字典的遍历需要搭配使用。方法返回了字典中的所有键值对的视图对象。键)与一个相对应的值(通常称之为。不可变的(字符串、数字、元组等), 但是值可以是任意的数据类型。分隔,键值对与键值对之间用逗号。**实现了映射这种数据结构。【注意】:如果直接创建一个。

2024-06-07 19:58:45 339

原创 Python | 判断集合成员(set作为哈希表)(集合)

还提供了一些常见方法方便使用,主要包括的就是集合的增删和遍历操作。也是一种数据结构,和数学中的集合类似,它。,并且不保证元素的顺序。查找通常是集合最重要的操作。创建集合,元素与元素之间使用逗号。创建集合,或者是列表转为集合。除了以上两种常见的操作,

2024-06-05 18:19:33 289

原创 Python | 出现频率最高的字母(数组作为哈希表)

字母一共有26个,我们可不可以定义一个长度为26的列表,列表的元素代表着各位字符的频率,初始频率都为0,列表的索引 0 对应着字符 a, 索引 1 对应着字符 b, 依次类推,索引 25 对应着 字母 z。然后遍历整个字符串,如果遇到字符 a, 则对应的 索引0 的元素值 + 1, 表示频率 + 1,当字符串遍历完毕,各个字符的频率也都统计完毕了。它的核心思想是在关键码和存储位置之间建立一个确定的对应关系。对应一个存储位置,而这个对应关系,称之为散列函数(

2024-06-05 16:01:58 197

原创 Python | 链表的基础操作||

python对缩进和符号十分敏感。

2024-06-05 15:48:09 76

原创 Python | 链表的基础操作1

人拥有着一些静态的特征,比如身高、体重、性别等,也拥有一些动态的行为,比如吃法,睡觉等,而在计算机世界中,我们将之抽象为一个类。方法会在实例创建的时候立即执行,可以向新创建的对象初始化属性,调用类创建对象时,类后边的所有参数都会依次传递到init中。需要定义一个链表类用于容纳链表节点,链表类一般包括链表头节点和链表的节点长度这两个属性。如果当前链表不为空链表,将新的节点放入到链表的尾部,接入链表,也就是当前链表的尾部的。,它定义了对象的结构和行为方式,而对象是“类”的实现。变量,将会成为所有的实例的属性。

2024-06-04 18:20:59 330

原创 Python | 位置交换(字符串、元组)

字符串转列表、swap两两交换、join()进行连接。需要注意的一点是,元组中只有一个元素时,需要在元素后面添加逗号,即。在上面的操作中,我们使用元组拆包将元组中的每个元素分别赋值给变量。Python有十分简洁的写法可以交换两个变量的值:元组解构。,然后使用元组解构("拆包")将这个元组中的值分别赋给。,这样就可以快速访问元组中的元素。这种操作实际上是将,,这样就完成了交换。

2024-06-04 15:08:18 179

原创 Python | 句子缩写

的第二个字符开始遍历到倒数第二个字符(最后一个字符肯定不是一个单词,不需要拼接)。在循环中,检查当前字符是否为空格,并且下一个字符不是空格(这是为了跳过单词之间的多个空格),如果满足条件,则说明遇到了一个新的单词,下一个字符是这个单词的首字母,然后将下一个字符经过处理后添加到。对应的 Unicode 码值是从 65 到 90, 大小写字母之间的差值为32,所以可以通过数学运算将小写字符减去32后转换为大写字符。如果实参是可变对象(例如,列表或字典),函数内的操作可能会影响到实参,这是因为在这种情况下,

2024-06-04 14:53:02 480 1

原创 Python | 平均绩点

以及空格之外的字符,则把“真令牌”替换成“假令牌”,这样当走出循环之后再进行输出处理时,就会因为不认识这个“假令牌”而不进行输出。也就是说,我们可以采用这样一种思路,事先给每一行字符串一个“真的令牌”,字符串遍历处理过程中,如果有哪一行字符串中有。开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去。在Python中,整数相除会得到浮点数结果,即使结果是一个整数,也会以浮点数的形式表示。中的字符串连接成一个新的字符串,你可以指定连接符号,比如下面的示例。

2024-06-03 23:00:05 594

原创 Python | 摆平积木(列表)

包含多组测试数据时就需要使用while True。

2024-06-03 20:05:56 116

原创 Python | 倒叙输出和隔位输出(数组和列表)

列表可以包含各种不同类型的元素,包括整数、浮点数、字符串、甚至可以是其他列表,而且列表的长度是可变的,你可以根据需要向列表中添加或删除元素,从而改变列表的长度。此时列表的长度为n, 倒序输出列表,即从列表的第 n-1 位遍历到第0位,如果使用 for 循环,range 的起始位置应该是 n -1,切片是对列表的一个连续片段的引用,就好像列表从中间的某个部分到另外一个部分切了两刀,从而拿到列表的一部分。是可选参数,用于指定从起始到结束的步长,默认为1,切片获取的内容是从开头索引到结束索引(不包括结束索引)。

2024-06-03 19:55:36 415

原创 Python | A + B问题|V

和c++不同,python中的for循环永远的都是左闭右开区间,不能自己控制,所以在循环体中用变量i来索引时,要注意i的取值。还有一个问题仍存在,就是列表中的所有元素仍然是字符串,我们需要用一种快捷操作将列表中的所有元素转换成整数,这可以使用内置的。函数,它也常用于Python中的列表操作,可以将一个函数应用到序列的每个元素,并返回一个包含结果的新序列(初始值是总和的初始值,然后将列表中的元素依次相加。从列表中获取从指定索引(包括该索引)到序列末尾的所有元素。,将之转换成整数,并最终返回一个新的列表。

2024-06-02 23:24:23 313

原创 Python | A + B问题|||

continue:只能出现在for、while循环内部,用法实在执行过程中跳过当前循环迭代的剩余部分,然后进行下一次迭代。, 如果判断结果为True, 则执行语句1,并返回执行结果,如果判断结果为False, 则执行语句2,并返回执行结果。逻辑运算符:and(&&)、or(||)、not(!条件运算符在执行时,if语句:if、elif、else。

2024-06-02 22:27:58 297

原创 Python | A + B问题||

循环中,条件判断通常是一个布尔值,即true表示真,false表示假,但是假设我们给定的是一个整数类型的值,编译器会帮助我们进行数据类型转换,将之转换成布尔值,如果整数的值为0,则条件的值为false, 其他非0的数都会转换成true。2.在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。我们使用 int()、float()、str()、bool() 等函数来执行显式类型转换。既然是持续性的输入,说明在循环做输入n这个操作,那我们就需要使用到上一节中使用的while。

2024-06-02 20:36:41 342

原创 Python | A + B问题|

虽然我们现在只写了几行代码,但是以后我们会面对上千甚至上万行代码,为了方便组织和管理,这些代码要分属不同的模块,就像图书馆里的书要分不同的类一样。的控制下,执行输入、计算、输出的三行代码会持续不断的运行,你输入一行数据,程序就处理一行数据,但是数据的输入是不会一直进行下去的,当输入结束时,循环也应该终止掉。中的代码会被尝试执行,如果没有发生错误,则正常执行,用户停止输入后,输入的内容不能正确地分割成两个整数,或者其他可能的错误发生,就会引起程序异常,这时就会由。而且,Python中有许多内置的模块,比如。

2024-06-02 18:46:02 406

原创 acm模式练习

就是取出每一位数并进行判断,比较简单,还是注意上面那道题说的cin时要有while循环。4.cout和printf的区别:前者自动输出换行符,后者要自己输出“\n”1.getline函数格式,直到读入一个换行符时停止,可接受一整行的换行符。需要多输出换行符,且右多组计算数据,但每大组之间又不需要换行符。为什么这个while循环是必要的?外层while循环什么时候停止?while循环什么时候停止?5.A + B问题V||6.A+ B问题V|||2.A + B问题||当n=0时,输入结束。

2024-06-01 20:02:24 443

原创 第五十天 进入子序列问题 | 300.最长递增子序列 674.最长连续递增序列 718.最长重复子数组

为什么一定表示 “以nums[i]结尾的最长递增子序” ,因为我们在 做 递增比较的时候,如果比较 nums[j] 和 nums[i] 的大小,那么两个递增子序列一定分别以nums[j]为结尾 和 nums[i]为结尾, 要不然这个比较就没有意义了,不是尾部元素的比较那么 如何算递增呢。所以:if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);1.dp数组含义:以nums[i]为结尾的最长递增子序列的长度。以nums[i]为结尾的最长递增子序列的长度。

2024-06-01 17:46:56 182

原创 python 第一天

问题:编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上。问题:使用给定的整数n,编写一个程序生成一个包含(i, i*i)的字典,该字典包含1到n之间的整数(两者都包含)。问题:编写一个可以计算给定数的阶乘的程序。结果应该以逗号分隔的顺序打印在一行上。提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。陌生语法:把for循环套在print函数里。

2024-05-31 19:47:04 875

原创 第四十九天 | 188.买卖股票的最佳时机|V 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

选最大的,所以 dp[i][1] = max(dp[i - 1][0] - prices[i], dp[i - 1][1]);所以dp[i][2] = max(dp[i - 1][1] + prices[i], dp[i - 1][2])使用二维数组 dp[i][j] :第i天的状态为j,所剩下的最大现金是dp[i][j]第0天没有操作,这个最容易想到,就是0,即:dp[0][0] = 0;第0天做第一次买入的操作,dp[0][1] = -prices[0];第二次卖出初始化dp[0][4] = 0;

2024-05-30 20:35:14 414

原创 第四十八天 |122.买股票的最佳时期|| 121.购买股票的最佳时期 123.买卖股票的最佳时期|||

如果prices[i] - prices[i - 1] > 0,那么就在第 i - 1天买,在 i - 1 天卖,dp[i] 取第i - 1天的最大值加上在第 i - 1天买,在 i - 1 天卖所获得的新利润;dp[0][0]:第一天有股票,那么利润一定是 - prices[0]

2024-05-30 13:01:27 364

原创 第四十七天 | 198.打家劫舍 213.打家劫舍|| 337.打家劫舍|||

当i = 1时,dp[1]应该为前两个房间所能偷的最大值,又因为两个房间不能一起偷,所以去前两个房间的最大值作为dp[1]。两种情况:①偷第 i 房间,也就意味着一定不能头nums[i - 1]:dp[i - 2] + nums[i]1.dp数组含义:考虑下标 i 和 i 之前的房间(dp[i] 不一定会偷第 i个房间),所能偷的最大的金币。2.动态转移方程:dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])3.初始化:递推公式的基础是dp[0] 和 dp[1]

2024-05-29 18:28:18 242

原创 汇编原理 | 二进制、跳转指令、算数运算、

JB/JNAE/JC - jump if below/not above equal/carry 低于/不高于等于/有借位。在32位bit时该怎么表示-6?-> 111...(20个1) 1101 (十进制里的13/d) 0110(十进制里的6) 0110(十进制里的6)-> 000...(20个0) 0010(十进制里的2) 1001(十进制里的9) 1010(十进制里的a)a-Above、g-Greater 当操作数1 > 操作数2 时发生跳转。-1 = 1111(由 1 + (-1) = 0 推的)

2024-05-28 21:27:06 575

原创 第四十六天 | 279.完全平方数 139.单词拆分

if([i,j] && dp[i] == true) 则 dp[j] == true;这个背包的总容量为s.size(),如果到最后背包内所装物品的数量为s.size(),就返回true,否则返回false.2.状态转移方程:dp[j] = min(dp[j], dp[j - i * i] + 1)1.dp[j]数组含义:装满容量为 j 的背包所需要的物品数为dp[j]2.动态转移方程:如果字典里有[i],dp[j] = dp[j - ] + 1;1.dp[j]含义:容量为j的背包所装物品的数目。

2024-05-28 20:37:40 364

原创 常用汇编指令

1.数据寄存器:AX(accumulator 累加器)、BX(base address 基址寄存器 “过渡寄存器”)、CX(counter 计数器)、DX(data 数据寄存器):可拆分为L和H,将16位拆分为低八位和高八位。[注]:这两个属于变址寄存器.可以和bx.bp联用,但是和bx连用时,段地址在DS中,和bp联用时,段地址在SS中.也可以单独使用,单独使用时,段地址默认在DS中,想要越段使用,加上段前缀即可.BP(base pointer):基址指针,段地址默认在SS中,可以定位物理地址。

2024-05-28 18:08:05 402

原创 汇编原理(四)[BX]和loop指令

误区:在编译器里写代码和在debug里写代码是不一样的,此时,对于编译器来说,就需要用到[bx][bx]同样表示一个内存单元,他的偏移地址在bx中,比如下面的指令。

2024-05-28 15:40:16 377

原创 关于DOS

属于单用户单任务操作系统,一次只能执行一个任务。一次只能执行一个任务。DOS操作系统是通过输入命令来执行一些操作。)的程序,表面看上去类似于Win3.x/9x中的MS-DOS窗口。然而,它们是完全不同的。WinNT/2K/XP中有个叫“命令提示符”(

2024-05-28 15:11:16 231

空空如也

空空如也

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

TA关注的人

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