· 现代计算机系统的层次;
· 应用程序、语言处理系统、操作系统、指令体系结构、计算机硬件。
· 语言处理系统包括:各种语言处理程序(如汇编、编译、链接)、运行时系统(如库函数、调试、优化等功能)。
· 操作系统包括人机交互的界面、提供服务功能的内核例程。
· ISA(指令集体系结构):
· ISA是一种规约,规定了如何使用硬件。
· 是可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定;
· 指令·可以接受的操作数的类型;
· 操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、长度和用途;
· 操作数在储存空间时按照大端还是小端方式存放;
· 操作数所能存放的储存空间的大小和编址方式;
· 指令获取操作数的方式,既寻址方式;
· 指令执行过程的控制方式,包括程序计数器(PC)、条件码定义等。
· 定点数与浮点数:
· 小数点位置约定在固定位置的数称为定点数;
· 小数点位置约定为可浮动位置的数称为浮点数。
· 定点小数用来表示浮点数的尾数部分。
· 定点整数用来表示整数,分带符号整数和无符号整数。
· 任何是实数(浮点数)X都可以表示为:
其中S取值为0或1,用 来表示数X的符号;M是一个二进制定点小数,称为X的尾数;E是一个二进制定点整数,称为数X的阶或指数;R是基数,可以为1、 4、 16等。计算机中只要表示S、M和E三个信息就能确定X的值,这就是浮点数。
· 原码、移码、补码、反码:
· 原码: 首位表示正负,其余用二进制表示。
· 移码: 将每一个数值加上一个偏置常数(bias)。通常,当编码位数为n时,bias取2n-1或2n-1-1。此时移码和补码仅第一位不同,移码用来表示浮点数的阶(便于浮点数加减运算时的对阶操作,比较大小),例如:
· 补码: 实现了加法与减法的统一。
X是真值,X的补码是机器数。
· · 计算方法: 一个正数的补码等于正数本身;而 一个负数的补码等于模(2n,n相当于负数的位数)减去该负数的绝对值,再将首位置为1。对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一负数的补码来代替;一个负数的补码等于将对应正数补码的各位取反,末位加一。
· 变形补码: 双符号,用于存放可能溢出的中间结果。比正常二进制数多一位,最高位用于储存符号位,相当于在补码首位添加一位表示符号或者溢出的数字。如图:
· 反码: 将所有位数反转过来。
带符号数用补码表示。
· 浮点数的表示:
· 同一个数有多个表示形式,对于十进制数:1.0*1000000000,有规格化形式:1.0 * 10-9(唯一),非规格化形式:0.1 * 10-8等。
· 对于二进制数,和前面讲的浮点数表一样。
· 例:对于32位浮点数:
· 第0位S表示符号位;第18位用**移码**表示**阶码E**(偏置常数为128);第9位第31位为二进制原码小数表示的尾数M。
· 规格化尾数的小数点后第一位总是1,所以规定第一位默认的1不显示出来,这样23位数可以表示24位数。
· 为了可以表示更多的有效数字,通常规定格式化数的小数点前为1。
· 单精度SP,双精度DP浮点数表示方法:
· 在SP规格化阶码中,阶码范围是0000 0001(-126)~ 1111 1110(127),全1和全0要表示特殊值。
· SP的偏置常数为127,DP的偏置常数为1023。
记住阶码一定要用移码表示,也就需要偏置常数。
· 例:1 011 11101 110 0000 0000 0000 0000 0000(单精度float)的值是多少:
· · 首先,首位为1,是负数。
· · 阶为0111 1101,偏置常数为127,阶码的实值=0111 1101 - 127(0111 1111)= -2。
· · 尾数部分必须在最前面加1。则尾数数值为1 + 1 * 2-1 + 1 * 2-2 + 0 * 2-3 + 0 * 2-4…… = 1.75。
所以原数的真值为-1.75 * 2-2 = -0.4375。
· 例:已知float型的变量为-12.75,求x的机器数。
· · 首先写为规格化二进制数:-12.75 = -1100.11 = -1.100 11 * 23。
· · 所以符号位S为1;
· · 阶码E = 127(偏置常数)+ 3 = 128 + 2 = 1000 0010。
· · 尾数码 = 1001 1(后面补0,补足23位)……
· · 所以机器数为:1100 0001 0100 1100 0000 0000 0000 0000。
· 特殊数表示:
· · +0表示为:0 00000000 0000000000000(全0)。
· · -0表示为:1 00000000 0000000000000(首位为1)。
· · +∞:0 11111111 0000000000000000
· · -∞:1 11111111 0000000000000000
· · 在浮点数中,浮点数÷0不会抛出异常,反而会表示为+∞/-∞。
· · 对于单精度浮点数:
· · 对于不可表示数,机器会将其转化为最邻近的可表示数。这里的不可表示数是因为float表示的数是有限、稀疏的,对于精度太大的数可能会被近似储存,从而表示为可表示数。
· 非数值数据的表示:
· · 逻辑数据的编码表示:
· · 用一位bit表示;进行运算时,按位进行运算;计算机通过指令识别逻辑数据和数值数据。
· · 西文字符的编码表示:
· · 常用ASCII码表示。
· · 显示时,需要点阵输出码等。
· · 汉字及国际字符的编码表示:
· · 有以下几种表示形式:
· · · 输入码:对汉字用相应的按键进行编码表示,用于输入(如:输入法)。
· · · 内码:用于在系统中进行储存、查找、传送等处理。
· · · 字模点阵或轮廓描述:描述汉字字模点阵或轮廓,用于显示/打印。
· · GB2312-80字符集:
· · · 汉字的区位码:
· · · 码表由94行、94列组成,行号为区号,列好为位号,各占7位bit。
· · · 指出了汉字在码表中的位置,共14位,区号在左,位号在右。
· · · 汉字的国际码:
· · · 每个汉字的区号和位号各自再加上32(20H,H表示16进制),得到国际码;
· · · 国际码中区号和位号各占7位,在计算机内部,为了方便处理和储存,前面添加一个0,构成一个字节。
· · · 汉字内码:
· · · 为了使国际码和ASCII码区别,将国际码的两个字节的第一位 置为1,即得到汉字内码。
· · 多媒体信息的表示:
· · · 图形用构建图形的直线或曲线的坐标点及控制点来描述,而这些坐标点或控制点则用数值数据描述。
· · · 图像用构成图像的点(像素)的亮度、颜色或灰度等信息来描述,这些亮度和灰度等数值则用数值数据描述。
· · · 音频信息通过对模拟声音进行采样、量化(二进制编码)来获得,因此量化后得到的是一个数值数据序列(随时间变化)。
· · · 视频信息描述的是随时间变化的图像(每一幅图像称为一帧)。
· · · 音乐信息(MIDI)通过对演奏的乐器、乐谱等各类信息用0和1进行编码来描述。
· · 多媒体信息用一个复杂的数据结构来描述,其中的基本数据要么是数值数据,要么是用0/1编码的非数值数据。
· 数据的基本宽度:
· 比特(bit,位)是计算机中处理、储存、传输信息的最小单位
· 二进制信息最基础的计量单位是字节(Byte)
· · 字节是最小可寻址单位,线代计算机的储存器按字节编址;
· · LSB表示最低有效字节,MSB表示最高有效字节
· 字长指数据通路的宽度(CPU内部数据流经的路径以及路径上的部件)。
· 字表示被处理信息的单位,用来度量数据类型的宽度。
· · 容量单位换算:
· · KB:1KB = 210 Byte = 1024 B
· · MB:1MB = 210 Byte = 1024 KB
· · GB:1GB = 210 Byte = 1024 MB
· · TB: 1TB = 210 Byte = 1024 GB
· · 通信单位换算:
· · kb/s:1kbps = 103 b/s = 1000 bps
· · Mb/s:1Mbps = 106 b/s = 1000 kbps
· · Gb/s:1Gbps = 109 b/s = 1000 Mbps
· · Tb/s:1Tbps = 1012 b/s = 1000 Gbps
如果把b换成B,则表示字节而不是比特。K表示1024,k表示1000,M、m、G等没有特殊说明,看上下文判断。
· · 数据类型与机器有关:
· · 同类型数据并不是所有机器都采用相同的宽度,分配的字节数随ISA、机器字长和编译器的不同而不同。
· 数据的储存和排序类型
· 大端排序和小端排序:
· 设int i = -65535,存放在100号但单元上(占据100~103),则用“取数”指令访问100号单元取出 i 时,必须清楚 i 的4个字节是如何存放的。
· · i = 216 - 1,所以i的补码是FF FF 00 01
· · 存放情况可能如下:
· · 小端方式:就是高字节在高位存放,低字节在地位存放。
· · 大端方式:与小端方式相反。