二进制编码和计算机存储

本文最后更新于:5 个月前

参考资料:计算机科学导论 汇编原理(王爽)

关于二进制编码和存储知识

参考资料:计算机科学导论 汇编原理(王爽)

视频狂神说

1,进制转换

进制只是一种对数字的编码方式

​ 我们因为身边的客观事物(10根手指)对十进制数字编码更为熟悉,但数的概念是独立的,数的运算法则是完备的,而进制只是数的表达方式,所以每一种进制在数字的运算法则上完备的。

​ 数的任何进制表达都是有序的,就像十进制一样(数表),我们在计算时,有“查数“的思想,就像是在十进制运算中中,我们在运算时其实会调取熟记于心的九九加法表和九九乘法表(这些表记录了十进制个位基本运算);要想对其他的进制套用十进制的运算模式,我们可以根据其他进制中,亦可以***编制一个对应的”加乘表“***,用***”查数“***的思想(或者说查表),即可对不同进制的数进行十进制算数模式的套用;其中减除的运算需要我们可以用加乘的逆运算思想进行匹配,从而得出结果。

​ 我们要注意我们要对不同进制的“个位数”进行预编码,例如十进制中我们有0-9,二进制中0和1,0-9不够用的我们可以用其他字符来代替,比如16进制我们可以用0-9以及A-F,也就是说只要我们愿意,我们也可以将十进制中的0-9化成其他的字符

​ 我们现在用的比较多的进制位2,4,8,16(基数都是2的指数)

进制的转换重点在于数字编码的位(比如十进制的个,十,百)

a.十进制与其他进制数的转化(较常用):

​ 任何数的进制都可以用**“按权展开”**的方式将不同进制的数转化为十进制(这个权是位权,十进制本身显然)

​ 十进制数转换为其他的进制可以对整数部分 除“数”取余对小数部分 乘“数”取整,直至小数部分为0即可

(“数”是基数,进制),小数部分最后有可能无法取0,在目标进制中为无限小数。

b.一种进制的有限小数部分 在另一种进制有可能会变成 无法精确表达的无限小数

​ 某种进制中的小数在另一种进制中能被有限表达是有条件的————原进制中的小数部分能在目标进制中

​ 能按权展开,比如0.75(10)可以在二进制中按位权2展开位0.11(2)。

​ 显然这也导致了,在计算机中,十进制数小数部分在二进制中有可能会不能精确的表达出来;事实上,十进

​ 制小数基本不会在二进制中被表示成有限小数。

c.常用的2,4,8(取三合一),16(取四合一)进制相互之间的转化可以用“合位”的思想

​ 通常我们会将较长二进制数转化为其他其他的2^n进制,表达更为简短

​ 八进制数和16进制的相互转化应该使用二进制作为转化中介,因为“合位”的前提在于,合位取的数能在目标进

​ 进制中能被个位编码表达,八和16进制是无法直接进行“合位”转换的。

d.小数部分能否按权展开的确定

​ 我们可以用将原进制转化为十进制,观察数的大小,再看这个小数能否以目标位权进行展开。

在这里插入图片描述

2,机器码的编码:原码反码(一补数)补码(二补数)

参考资料:

详解 较简易解释 有关数据溢出

编码法则:

正数不变,负数要变,符号位需保留。(首位为符号位,0为正,1为负)

补码为减法而生,我们为了方便,将机器码的首位设置为符号位,接着开始研究机器码的加减,发现过程中产生了一系列问题,最后用补码的方式解决了。

负数原码>>反码>>补码的过程实则是:取负数十进制的数值的绝对值,急着按位取反,接着补1,从而得到-1(10)在计算机中的二进制表达(这个结论可以通过n-x=0的方式来判断)

补码的生活实例证明是时钟。

整数型数据在计算机中,用补码表示。

此时, 表盘相当于每128个刻度转一轮. 所以用补码表示的运算结果最小值和最大值应该是[-128, 127]。

一个数的反码, 实际上是这个数对于一个膜的同余数. 而这个膜并不是我们的二进制, 而是所能表示的最大值! 这就和钟表一样, 转了一圈后总能找到在可表示范围内的一个正确的数值!

3.位运算

位运算概述

使用案例

合理使用位运算能 避免数据的溢出

加快乘除法的运行速度(加减法与正常算法速度相当)

​ 这是因为位运算指令只占用CPU两个运行周期 而 乘除指令占了4个;

2,计算机结构基础

1,计算机三大总线:

CPU要想进行数据读写,达成读取内存地址和操作外设的目的,需要对系统进行信息的交互

交互的信息有:

  • 地址信息(存储单位的地址)
  • 数据信息(器件的选择,读写命令)
  • 控制信息(读写的数据)

交互的途径(电信号的传播):

  • 地址总线(决定了CPU寻址能力2^n)
  • 数据总线(决定了CPU单次数据传输量)
  • 控制总线(决定了CPU对系统其他部件的控制能力)

2,CPU读取内存数据的过程

物理存储器的分类

按读写性质可分为:

  • 随机存储器RAM //挥发性内存,带电读写,断电清空
  • 只读存储器ROM //非挥发性内存 只读不写 断电内容不丢失

按功能和连接可分为:

  • 随机存储器(供CPU使用的大部分数据程序)
  • 装有BIOS的ROM(存储着供各种外部设备启动的程序)
  • 接口卡上的RAM(需对大量暂时性数据进行存储,如显卡的显存)

内存存储空间

物理存储器看似独立,其实都是与CPU总线相连,CPU通过控制总线对他们发出内存读写命令,所以,CPU把所有的存储器都当内存对待,看做一个有若干存储单元组成的逻辑存储器,这就是所谓的内存地址空间。

CPU组成

  • 运算器(信息处理)
  • 控制器(控制各个器件)
  • 寄存器(信息存储)

(可能还有二级高速缓存)

关于CPU位数

计算机程序运行的虚拟内存


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!