- 博客(40)
- 资源 (2)
- 收藏
- 关注
原创 C++向二进制文件里写入string类型
当需要把string类型的数据写入二进制文件之后再读取的时候会出现错误,例如string test;ofstream out("xxx",ios:binary);out.wirte((char*)&test,sizeof(test)));这是不正确的做法,原因是string在stl中其实是一个类,这样写入的其实是test这个类对象,因此写到文件的其实是这个类的数据和指向这个类的指针。同时,因为string类的字符串是用new在堆上分配的,string类本身只包含字符串的指针,用c_str(
2022-01-16 20:31:11 4077 1
原创 Qt配置OpenCV教程及错误解决方法
一、准备工作写在前面(非常重要,不可忽视!!!):如果你没有上述问题可以不看这部分的后续内容;如果你有以上问题或者遇到了无法解决的问题,可以对照下文检查是否是你遇到的问题。在开始一切之前,请首先检查你的系统用户名中是否含有中文,如图: 如果你的用户名存在中文,那么你必须重新建立一个不含中文的用户名(如何创建,直接百度),如图: 否则,后续步骤会出现以下错误(可暂时不看错误示例):G++编译器运行出错(其实问题不在于G++的问题,你可以仔细阅读红字部分的错误信息,其实是由于进入系统用户目录的时
2021-11-21 11:09:12 5248 13
原创 字符串匹配算法
字符串的模式匹配字符串的模式匹配是一种常用的运算。所谓模式匹配,可以简单地理解为在目标(字符串)中寻找一个给定的模式(也是字符串),返回目标和模式匹配的第一个子串的首字符位置。通常目标串比较大,而模式串则比较短小。比如,原字符串为“ABCDEFG”,子串为“DEF”,则算法返回3。模式匹配的类型(1)精确匹配如果在目标T中至少一处存在模式P,则称匹配成功,否则即使目标与模式只有一个字符不同也不能称为匹配成功,即匹配失败。给定一个字符或符号组成的字符串目标对象T和一个字符串模式P,模式匹配的目
2021-10-29 15:29:41 770
原创 Numpy数组的广播机制
数组与数的计算:在Python列表中,想要对列表中所有的元素都加一个数,要么采用map函数,要么循环整个列表进行操作。但是NumPy中的数组可以直接在数组上进行操作。import numpy as npa1 = np.random.random((3,4))print(a1)# 如果想要在a1数组上所有元素都乘以10,那么可以通过以下来实现a2 = a1*10print(a2)# 也可以使用round让所有的元素只保留2位小数a3 = a2.round(2)数组与数组的计算:结构相
2021-10-16 17:06:36 198
原创 NumPy数组基本用法
什么是NumPy?Numpy是Python科学计算库,用于快速处理任意维度的数组。NumPy提供一个N维数组类型ndarray,它描述了相同类型的“items”的集合。numpy.ndarray支持向量化运算。NumPy使用c语言写的,底部解除了GIL,其对数组的操作速度不在受python解释器限制。NumPy和python中的列表有什么区别?python一个列表中可以存储多种数据类型。比如a = [1,‘a’]是允许的,而NumPy中的数组只能存储同种数据类型。NumPy中的数组可以是
2021-10-12 19:51:31 3960 1
原创 C++内置类型的自动初始化问题
例1、程序中有一个数据区,用来存放已初始化全局变量,静态变量和常量,这部分增加了目标文件的大小;还有一个未初始化数据区(BSS),用来存放未初始化全局变量,BSS的数据在程序开始执行之前被初始化为0或NULL,实际上BSS段数据在目标文件中只占一个符号位,编译器并没有给变量分配空间,“初始化为0”是指链接阶段才申请空间,并初始化。局部非静态变量未显示初始化时是一个随机值。即全局变量时初始化为0,局部变量时初始化为随机值,本题中由于x属于全局变量,所以默认初始化值为0.例2、 下面描述正确的是(.
2021-09-14 21:54:14 512
原创 jupyter notebook 内核正忙(无法执行指令)解决方案
当使用jupyter notebook执行代码时可能会出现以下情况:无法执行代码,右上角提示内核正忙问题产生原因:1、文件路径中包含中文(往往文件路径包含中文的时候,在安装之前就会提示无法安装,如果最终还是包含中文路径,应该重新安装)2、系统用户名中包含中文(如图所示,当用户名中包含中文,仍然会导致jupyter notebook无法运行。进入jupyter notebook之前只会弹出以下控制台窗口,并不会自动打开jupyter notebook操作窗口)解决方案:...
2021-09-10 21:24:41 15906 4
原创 进位加法器实现
进位加法器实现在不考虑进位的情况下:a+b的输出结果的真值表为:由图可知,该结果实际上为一个异或,因此可以设计以下电路:在考虑进位的情况下:首先分析结果的值,可得以下真值表:由图可知,该结果为一个三位异或,因此可以设计以下电路:再分析进位输出的值:①首先,若a,b全为1,则进位输出out一定为1。②若a,b有一个为1,则进位输出out由进位输入in决定:当进位in=0时,进位输出out=0;当进位in=1时,进位输出out=1;③若a,b全为0时,则不论进位输入in为多少,进位输
2021-06-08 22:40:53 2082
原创 MIPS指令表示之指令格式
一、指令格式1、R格式中各字段数值的含义例:add $8,$9,$10想要把它表示位字的形式,则根据字段的划分,每个字段的值分别如下:opcode=0 (参见附录) funct=32(参见附录) rd=8(目的)rs=9(首操作数) rt=10(次操作数) shamt=0(非位移)则字段的十进制数表示为:转化成二进制表示为:为什么R格式由两个6位字段来确定命令,而不是一个12位字段?答:为了尽量与其他格式兼容,同时让立即数字段由更大的存...
2021-05-20 20:33:18 6061 3
原创 MIPS汇编总结
一、汇编指令1.为了简化处理器的设计,MIPS处理器采用了固定结构的汇编指令:每个指令由4个部分组成:1个操作符+3个操作数 指令格式:指令代码 操作数1,操作数2,操作数32.在汇编指令中,寄存器没有数据类型,由运算符确定将寄存器的内容当作什么数据来处理3.MIPS既提供了检测溢出的加(add)、减(sub)指令,也停供了不检测溢出的加(addu)、减(subu)指令以适用不同高级语言的需求二、寄存器1.为了是使硬件设计更简单,MIPS处理器的汇编语言中,算术...
2021-05-06 16:51:16 8143 5
原创 C++动态数组创建
一、一维动态数组int main(){ int n; cin >> n; int* a = new int[n];}声明一个指针,用new开辟动态空间二、二维动态数组int main(){ int n; cin >> n; int m; cin >> m; int** a= new int* [m]; for (int i = 0; i < m; i++) { a.
2021-04-01 19:43:24 14432 5
原创 linux中几个重要的热键[tab]、[ctrl]-c、[ctrl]-d
linux几个重要的热键[tab]、[ctrl]-c、[ctrl]-d一、[tab]①[tab]接在一串命令的第一个字段后面,则为【命令补齐】②[tab]接在一串命令的第二个字段后面,则为【文件补齐】③若安装了BAsh-completion软件,则在某些命令后面使用[tab]按键时,可以进行【选项/参数补齐】功能二、[ctrl]-c终止当前运行的程序三、[ctrl]-d键盘输入结束{End Of File或者End Of Input),可以直接离开命令行模式...
2021-02-17 16:18:31 324
原创 总线的概念和结构形态
目录总线的概念和结构形态1.总线的基本概念2.总线的连接方式3.总线的内部结构4.总线结构实例1.总线的基本概念总览:1.1 定义总线是构成计算机系统的互联机构,是多个系统功能部件之间进行数据传送的公共通路。1.2 总线的分类1.2.1内部总线CPU内部连接各寄存器及运算器之间的总线,称为内部总线1.2.2系统总线CPU同计算机系统的其他高速功能部件、如寄存器、通道等互相连接的总线,称为系统总线1.2.3 I/O总线中、低速I/O设备.
2021-02-09 15:26:14 753
原创 计算机系统概论
1.1 计算机的分类电子数字计算机和电子模拟计算机的区别:通用计算机之间的区别:1.2 计算机发展简史1.2.1 计算机的五代变化第一代:1946~1957年,电子管计算机(数据处理机 开始得到应用)第二代:1958~1964年,晶体管计算机(工业控制机 开始得到应用)第三代:1965~1971年,中小规模集成电路计算机(小型计算机 开始出现)第四代:1972~1990年,大规模和超大规模集成电路计算机(微型计算机 开始出现)第五代:1...
2021-02-06 20:10:46 1290 2
原创 用位运算进行大小写字母转换
用位运算进行大小写字母转换就ASCLL码的二进制形式来看,除第5位(位数从0开始计算)外,大写字母和小写字母的其它各位都一样。大写字母ASCII码的第五位为0,小写字母的第5位为1.因此,一个字母,不管它原来是大写字母还是小写字母,将它的第5位置0,它就必然变成大写字母;将它的第五位置1,则它必然变成小写字母汇编语言:...
2021-02-05 16:15:21 2517 6
原创 and和or指令
and和or指令一、and指令:逻辑与指令,按位进行与运算例如指令:mov al,01100011Band al,00111011B执行后:al=00100011B通过该指令可将操作对象的相应位设为0,其他位不变例如:将al的第六位设为0的指令是:and al,10111111B二、or指令:逻辑或指令,按位进行或运算例如指令:ov al,01100011Bor al,00111011B执行后:al=01111011B通过指令可将操作对象的相应位.
2021-02-05 11:23:17 8419
原创 debug和汇编编译器masm对指令不同的处理
debug和汇编编译器masm对指令不同的处理1、在汇编源程序中,如果用指令访问一个内存单元,则在指令中必须用[...]来表示内存单元。如果在[ ]里用一个常量idata直接给出内存单元的偏移地址,就要在[ ]前面显式的给出段地址所在的寄存器比如 mov al,ds:[0]如果没有在[ ]的前面显式的给出段地址所在的段寄存器比如 mov al,[0]那么,编译器masm将把指令中的[idata]解释为idata2、如果在[ ]里用寄存器如bx,间接给出内存单元的偏移...
2021-01-28 20:34:10 333
原创 LOOP指令
LOOP指令1、Loop指令的格式: loop 标号2、CPU执行loop指令时,要进行两步操作①(cx)=(cx)-1②判断cx中的值,不为0则转至标号处执行程序,如果为0则向下继续执行3、通常用loop指令来实现循环功能,cx中存放循环次数4、大于9FFFH的十六进制数据A000H、A001H...FFFEH、FFFH等,在书写的时候都是以字母开头的。而在汇编程序中数据不能以字母开头,所以要在前面加0...
2021-01-28 20:21:33 31587
原创 定义的描述性符号:()
我们定义的描述性符号:()定义:使用( )来表示一个寄存器或内存单元中的内容()中的元素可以有三种类型:①寄存器名②段寄存器名③内存单元的物理地址(一个20位数据)
2021-01-28 20:15:25 359
原创 [BX]和内存单元的描述
[BX]和内存单元的描述1、要完整的描述一个内存单元,需要两种信息①内存单元的地址②内存单元的长度2、用[0]表示一个内存单元时,0表示单元的偏移地址,段地址默认在DS中3、[BX]同样也表示一个内存单元,它的偏移地址在bx中例、mov ax,[bx]将一个内存单元的内容送入ax,这个内存单元的长度为2字节,存放一个字,偏移地址在bx中,段地址在ds中...
2021-01-28 20:10:44 610 1
原创 汇编源程序
源程序一、伪指令定义:在汇编语言源程序中,包含两种指令,一种是汇编指令,一种是伪指令汇编指令:被编译为机器指令后被CPU执行伪指令:由编译器来执行二、segment和ends定义:segment和ends是一对成对使用的伪指令,这是在可被编译器编译的汇编程序时必须要使用到的一对伪指令①:segment和ends的功能是定义一个段,segment说明一个段的开始,ends说明一个段的结束②:一个段必须有一个名称来标识,使用格式为: 段名 sege...
2021-01-25 18:14:45 1564
原创 一个汇编程序从写出到执行的过程
一个程序从写出到执行的过程第一步:编写程序使用文本编辑器(任何文本编辑器都可,只需将文件后缀改为.asm),用汇编语言编写源程序(文件格式为XX.asm)第二步:对源程序进行编译连接①使用汇编编译程序(masm.exe)对源文件中的源程序进行编译,产生目标文件(文件格式为XX.obj)②再用连接程序(link.exe)对目标文件进行连接,生成可执行文件(XX.exe)强行插入:可执行文件包含两部分内容:①程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的.
2021-01-22 22:13:52 3209 2
原创 段的综述
用一个段存放数据,将它定义为“数据段”用一个段存放代码,将它定义为“代码段”用一个段当作栈,将它定义为“栈段”对于数据段吗,将它的段地址放在DS中,用MOV、ADD、SUB等访问内存单元的指令时,CPU就将我们定义的数据段中的内容当作数据来访问;对于代码段,将它的段地址放在CS中,将段中第一条指令的偏移地址放在IP中,这样CPU就将执行我们定义的代码段中的指令对于栈段,将它的段地址放在SS中,将栈顶单元的偏移地址放在SP中,这样CPU在需要进行栈操作的时候,比如执行PUSH、POP指令等,就将我们
2021-01-20 15:47:25 178
原创 栈
一、栈的定义和性质定义:栈是一种具有特殊的访问方式的存储空间特性:栈顶的元素总数醉后入栈,需要出栈时,又最先被从栈中取出*(LIFO:Last in,First out 后进先出)*二、CPU提供的栈的机制1、8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈)和POP(出栈)2、8086CPU的入栈和出栈操作都是以字为单位进行的3、8086CPU中有两个寄存器,段寄存器SS和段寄存器SP。栈顶的段地址存放在SS中,偏移地址存放在SP中4、在任意时刻,SS:SP指向栈顶元素5、8
2021-01-20 15:36:07 761
原创 寄存器(内存访问)
一、内存中字的存储1、字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成2、高地址内存单元存放字型数据的高位字节,低地址内存单元存放字型数据的地位字节3、任何两个连续的内存单元,N号单元和N+1号单元,可以将它们看成是两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元二、DS和[address]1、8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址2、8086CPU不支持将数据直接送入段寄存器的操作,只能用寄存器来进行中转三、数
2021-01-18 21:03:13 342
原创 常用DOS命令
一、CD命令CD命令的作用是改变当前目录,该命令常用于切换路径目录。CD命令主要有以下三种使用方法:①cd path :path是路径,例如,输入”cd c:\ “命令和”cd Windows"命令即可分别切换到“C:"和”C:\Wndows“目录下②cd…:cd后面的两个".”表示返回上一届目录。例如,当前的目录为“C:\windows",如果输入”cd…“命令,按下【Enter】键即可回到上一级目录,即”C:\“**③cd**:表示当前无论在哪一级子目录下,通过该命令都可以立即返回到根目录
2021-01-17 23:55:31 291
原创 计算机端口
一、什么是计算机端口1、计算机与外界通信交流的出口可以认为是”端口“。一个IP地址的端口可以有655536(256*256)个。2、端口是通过端口号来标记的,端口号只有整数,范围是0-65535.二、端口的分类在硬件领域中,端口又被称为接口;在软件领域中,端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O缓冲区## 三、端口的查看方法打开命令提示符,输入netstat -a -n命令...
2021-01-17 21:59:57 231
原创 MAC地址
一、什么是MAC地址1、 MAC地址就是在媒体接入层上使用的地址,也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。MAC地址与网络无关,即无论将带有这个地址的硬件(如网卡、集线器、路由器等))接入到网络的何处,都是相同的MAC地址2、MAC地址通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如08:00:20:0A:8C:6D就是一个MAC地址,其中的前16位16进制数08:00:20代表网络硬件制造商的编号,由IEEE分配,后6位16进制数0A:8C:6D代表该制造商
2021-01-17 10:12:41 12951 8
原创 CS、IP寄存器
一、CS和IP1、CS和IP是8086CPU中两个最关键的寄存器,它们指示了 CUP当前药品读取指令的地址2、CS为代码段寄存器,IP为指令指针寄存器3、8086CPU的工作原理①从 CS:IP指向的内存的单元读取指令,读取的指令进门如指令缓存器②IP=IP+所读取指令的长度,从而指向下一条指令③执行指令。转到步骤①,重复这个过程二、修改CS、IP的命令1、在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制2、MOV指令不能用于设置CS、I
2021-01-17 10:00:35 4865 5
原创 细说IP地址
一、认识IP地址1、 IP地址用于在TCP/IP通信协议中标记每台计算机的地址,通常使用十进制来表示,如192.168.1.100,但在计算机内部,IP地址是一个32位的二进制数值。如11000000 10101000 00000001 00000110(192.168.1.6)2、一个完整的IP地址由两部分组成,分别是网络号部分和主机号部分。网络号部分表示其所属的网段编号,主机号则表示该网段中该主机的地址编号二、IP地址的分类按网络规模的大小,IP地址可以分为A,B,C,D,E五类,其中A、B、C
2021-01-16 15:30:44 362
原创 8086CPU物理地址的表示方法
一、物理地址1、所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,成为物理地址2、CPU通过地址总线送入存储器的必须是一个内存单元的物理地址3、不同的CPU可以有不同的形成的物理地址的方式二、十六位结构的CPU的特性1、运算器一次最多可以处理16位的数据2、寄存器最大的宽度位6位3、寄存器和运算器之间的通路为16位三、8086CPU给出物理地址的方式①CPU中相关部件提供两个16位的地址,一个称为段地址,一个称为偏移地址②段地址和偏移地址通过内部
2021-01-14 09:51:50 2534
原创 windous注册表的作用
**综述:Windows注册表是一个强大的数据库,主要用来存储计算机软硬件各种配置数据,记录了用户安装在计算机上的软件和每个程序的相关信息。其主要作业表现在以下几个方面:**一、在计算机网络中,用户可以通过注册表来检查系统配置和设置情况,从而实现计算机网络的远程管理二、用户可以通过注册表对硬件设备的驱动程序、系统参数和应用程序进行跟踪配置三、用户可以修改注册表中许多系统隐藏的参数来提高系统的性能,或是对计算机进行个性化的配置四、注册表中保存的部分硬件数据支持高版本的windows的即插即用特性。在
2021-01-13 19:24:33 2682 2
原创 寄存器基础知识
一、CUP各组成部分二、寄存器的种类1.不同的CPU,寄存器的个数、结构不相同2.8086CPU有14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW三、通用寄存器1、8086CPU的所有寄存器都是16位的,可以存放两个字节2、AX,BX,CX,DX这四个寄存器通常用来存放一般性的数据,被称为通用寄存器3、8086CUP上一代CPU中的寄存器都是8位的,为确保兼容,8086CUP的AX,BX,CX,DX这四个寄存器可以分为两个独立
2021-01-12 17:22:46 1932
原创 汇编语言基础
汇编语言基础一、汇编语言的体系二、机器语言1、机器语言是机器指令的集合2、电子计算机的机器指令是一系列二进制数字3、CUP使机器指令转变为一系列高低电平,以使计算机的电子器件受到驱动,进行运算4、每一种微处理器都有自己的机器指令集三、存储器1、CUP使计算机的核心部件,它控制整个计算机运作并进行运算2、指令和数据在存储器中存放,即内存四、指令和数据1、在内存山。指令和数据没有任何区别,都是二进制信息2、CUP在工作时,把有的信息看作数据,有的信息看作指令五、存储单元1、存储器被
2021-01-10 20:38:58 2067 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人