汇编语言学习笔记(【汇编语言】小甲鱼零基础汇编)[TOC]
注:本篇笔记均摘自一位热心的B站用户—惜取少年时
第一章 基础知识【学习汇编主要是:学习汇编的编程思想,掌握机器运行的思维】 汇编语言是直接在硬件上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。 1.汇编课程的研究重点 如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作 2.汇编语言的主体是汇编指令 3.汇编指令和机器指令的差别在于指令的表示方法上 汇编指令是机器指令便于记忆的书写格式 4.汇编语言时机器指令的助记符 5.汇编语言的组成 1.汇编指令(机器码的助记符) 2.伪指令(由编译器执行) 3.其他符号(由编译器识别,如:+ - * /) 汇编语言的核心是汇编指令,他决定了汇编语言的特性 6.CPU对存储器的读写 CPU要想进行数据的读写,必须和外部器件(即芯片)进行三类信息的交互 1.地址信息:存储单元的地址 2.控制信息:芯片的选择,读或写命令3.数据信息: ...
全排列问题问题定义:给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[[1,2,3], [1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
问题分析:人脑建模过程(类似“走迷宫”,试一步走一步,当前的路走不通就返回上一个路口):
先取原数组的第一个数,把它“固定”在一个temp数组的首位,比如:[1,num,num]
再取出原数组的第二个数,把它“固定”在temp数组的第二位,比如:[1,2,num]
再取出原数组的第三个数,把它“固定”在temp数组的第三位,比如:[1,2,3]
此时我们得到了第一个排列
接着我们会想,如果在第二步中,取出的是第三个数,也就是[1,3,num],那么显然就有[1,3,2]
再接着我们又会往前想,如果我们在第一步取的是第二个数,然后进行后续的操作。同样的如果第一步是是第三个数呢?
由图可知,我们每次不重复地从arr中取出一个数进行“固定”,每一次的“固定”都会影响下一次的“固定”的选择。通俗地讲,就是高中学过的排列组合里面的排列,第一次可以有三种选择,第二次有两种选择 ...
复习堆排序堆的定义:堆是一个具有以下性质的二叉树:每个结点的值都大于或者等于其左右孩子结点的值,称之为大顶堆。反之称之为小顶堆。
那么,在代码中如何表示大小顶堆?123arr[i]>=arr[2*i+1]&&arr[i]>=arr[2*i+2]//大顶堆arr[i]<=arr[2*i+1]&&arr[i]<=arr[2*i+2]//小顶堆
堆排序の思想
先把待排序序列构建成一个大(小)顶堆
这时,整个序列的最大值就是堆顶的根节点(也就是数组的第一个元素)
将其与末尾元素进行交换,此时末尾就是最大值
然后将剩余的n-1个元素重新构造成一个新的堆,这样就得到n-1个元素的次小值,如此反复,就能得到一个有序序列——[重复(1),(2),(3)步骤]
代码实现:12345678910111213141516171819202122232425262728293031323334353637import java.util.Arrays;public class heapSort { public static ...
计算机组成原理与汇编语言note①相关概念机器数:数字在计算机中的二进制表达形式,在二进制的最高位存放正或负符号,正数为0,负数为1
真值:带符号位的机器数对应的真正的数值
原码:符号位加上真值的绝对值
反码:正数の反码还是本身,而负数的反码:符号位不变,其余位按位取反
补码:反码+1
那么,为什么要引入反码和补码?
人脑计算:我们会自动将符号位分开并进行计算
电脑(计算机)计算:因为符号位也是0,1表示,在做计算时,计算机无法辨别哪些是符号位哪些是数值位。如果硬要让计算机认识的话也不是不行,但是这会使计算机的基础电路设计变得异常复杂(这是要累死设计计算机的人- -)
所以我们希望符号位也能参与到运算当中。另外我们都知道CPU只有加法器而没有减法器,这是为什么呢?我们小学就知道,减法是加法的逆运算(减去一个数等于加上那个数的负数),因此只要解决计算机的加法问题就好啦
At First…原码君出来了,但是在运算中很快就发现了问题,比如一个正数和一个负数相加,就会出问题。比如1-1
11 - 1 = 1 + (-1) = [0000_0001]原 + [1000_0001]原 = ...
算法分析与设计
chapter①:算法引论定义:解决某种问题的方法
特征:输入,输出,确定性(指令清晰无歧义),有限性(指令执行次数有限)
算法复杂性の分析
时间复杂性:T=T(N[问题规模],I[算法的输入],A[算法本身])
空间复杂性 :S=S(N,I)
渐进时间复杂性=时间复杂度
大O表示法(算法时间运行时间的上界)
设f(n)和g(n)是定义在正整数集上的正函数,若有正常数C和自然数n0。使得当n≥n0时,有f(n)≤C(g(n)),则称f(n)=O(g(n)),也称f(n)的阶不高于g(n)的阶
大Ω表示法(算法时间运行时间的下界)
设f(n)和g(n)是定义在正整数集上的正函数,若有正常数C和自然数n0。使得当n≥n0时,有f(n)≥C(g(n)),则称f(n)=Ω(g(n)),也称f(n)的阶不低于g(n)的阶
θ表示法(算法时间运行时间的准确界)
C1(g1(n))≤f(n)≤C2(g2(n))
chapter②:递归与分治策略神魔是递归?)
还是……
从上面的两张图我们可以看出,递归就是自己调用自己的过程。 ...
计算机网络注:按照课时进度整理
Part①网络的分类
电信网络:向客户提供电话,电报以及传真等服务
有线电视网络:向用户传送各类电视节目
计算机网络:能允许用户能够在计算机之间传送数据文件
思考:internet和Internet有何区别?
internet指的是互连网,它泛指有多个计算机网络互相连而成的计算机网络(网络的网络)。在这些网络之间的通信协议可以任意选择,不一定非要TCP/IP协议
Internet则是我们经常谈到的互联网(因特网),它是由当前全球最大的、开放的、由众多网络互相连接而成的互连网,它采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET。PS:现在的互联网具有三级结构,即主干网、地区网、校园网(企业网)
相关名词:ISP(Internet Service Provider):互联网服务提供者,也就是提供IP地址,比如我国的三大通信巨头:“移”不动、“联”不通、“信”不过,根据覆盖面积大小和IP数量的不同,ISP又分为:主干ISP、地区ISP、本地ISP
互联网的组成:边缘部分:连接在互联网的所有的端系统(手机端、电脑端、网络 ...
蛋疼のNode学习之路(持续更新…)Day1Previously on ‘Preface’,对于一个几乎零基础的我来说,搭建博客的过程是十分痛苦的,这现在只是一个简单的修改博客主题和编辑的过程啊(前端知识盲区o(╥﹏╥)o)。所以我决定花上一定时间来学习Node.js。希望学完之后我能更好的运维我的BLog(顺便复【yu】习一下Web相关知识,HTML5,CSS3,JavaScript什么的都快忘光光啦)话不多说,今天开始第一天的学习!
①那么,Node.js是乜嘢?(what?)解释:
不是一门语言,不是库,不是框架。而是一个js的运行时 ,通俗地说就是能够一个能够运行js的平台环境。
可提供服务器级别的api(需要引入相关的模块,比如文件读写需要’fs’,也就是File-System):文件读写,网络服务构建,网络通信,http服务器(http模块)……//后面会讲模块系统
特性:
事件驱动
非阻塞IO模型(异步)————————————-啊啥是同步和异步?,又要去恶补了o((⊙﹏⊙))o
轻量和高效
与Node.js相关的东东npm:全称是Node P ...
2021年1月31日半夜,躺在床上想着.因为今天下午的一道算法题我死活也写不出来(涉及知识盲区),翻了好多CSDN大佬们的博客终于有了思路.我在想,我是不是也可以搭一个属于自己的博客?就这样我溜到电脑旁,开始在网上寻找搭建博客的教程.相比于教程所演示的步骤以及最后的结果,我的却是漏洞百出.
第不知道第几个の漏洞:)
)
内心OS![]
就这样,我嗯是折腾到了凌晨2点半(2点的那条朋友圈发出来之后,我又发现博客有问题,然后又爬起来改……)
And…就这样,2021年2月1日,Franの杂货铺算是“正式”测试营业了.你们可能想问博客都应该写些啥东西,都说了是杂货铺,种类肯定会比较繁多.不过可能还是会以知识技术(计算机)有关.
However…以我现在的程度,能学会总结一些学科的知识点就已经很不错了.(我的总结能力有所欠缺,所以我总是一学就懂,一做就错.新知识”复写”(override)旧知识)
Finally…我希望自己能坚持下去,不断完善博客的功能(留言板,评论板……),提高自己的总结能力,另外能加强自己语言表达能力就更好了(我的表达能力像稀饭一样).为什么我大一的时候没有想到搭博客…… ...



