微机原理
第一章:基础知识
1.1数制及其转换
1.1.1数制
区别数制度——基数:表示该进位制所用数码或字符个数。
例:
十进制基数为:0、1、2、3、4、5、6、7、8、9
二进制基数为:0、1
汇编语言规定:所有计算机中表示的书必须以0~9作为开头
例
F6H必须写为0F6H
十进制
按权展开:
特点:
- 基数为10即有十个不同的数码或字符。
- 逢十进一
- 表示方法
- ①左下角表明数制\((345.67)_{10}\)
②数字后加符号D(Decimal-十进制)\(345.67D\)
③默认什么也不加\(345.67\)
二进制
二进制及其编码是所有计算机最基本的语言。
按权展开:
特点:
- 基数为2,数码为0、1
- 逢二进一
- 表示方法:
①左下角表明数制
②数字后加符号B(Binary-二进制)
八进制
按权展开:
特点:
- 八个不同的数码即基数为8
- 逢八进一
- 表示方法:
①左下角表明数制
②数字后加符号Q(Octal-二进制)便于与0区分采用Q结尾
十六进制
按权展开:
特点:
-
十六个不同的数码即基数为16
-
逢十六进一
-
表示方法:
①右下角表明数制
②数字后加符H(Hexadecimal-十六进制)
1.1.2数制转换
二进制-> 十进制
加权直接计算
例:
\((11011.01)_2=1*2^4+1*2^3+0*2^2+1*2^1+1*2^0+0*2^{-1}+1*2^{-2}=16+8+2+1+0.25=27.25\)
十进制->二进制
①整数部分(除2求余)最低位\(\Rightarrow\)最高位
例:\(187D\)
除2 | 余数 | |
---|---|---|
\(187/2=93\) | 1 | 最低位 |
\(93/2=46\) | 1 | |
\(46/2=23\) | 0 | |
\(23/2=11\) | 1 | |
\(11/2=5\) | 1 | |
\(5/2=2\) | 1 | |
\(2/2=1\) | 0 | |
\(1/2=0\) | 1 | 最高位 |
\(187D=10111011B\)
二进制起始位为最高位即最左边第一位
②小数部分(乘2求整)最高位\(\Rightarrow\)最低位
例:\(0.71875\)
乘2 | 取整数 | |
---|---|---|
\(0.71875*2=1.4375\) | 1 | 最高位 |
\(0.4375*2=0.875\) | 0 | |
\(0.875*2=1.75\) | 1 | |
\(0.75*2=1.5\) | 1 | |
\(0.5*2=1\) | 1 | 最低位 |
二进制->十六进制
四位二进制可以有16种组合,恰好对应0~16,所以可以用一位16进制表示4位二进制。
整数部分:从小数点往左每4位一组,最高位不足4位时补0到4位一组。
小数部分:从小数点往右每4位一组,最低位不足4位时补0到4位一组。
例:\(110100110.110101\)转换为十六进制。
整数部分:
0001 | 1010 | 0110 |
---|---|---|
1 | A | 6 |
小数部分:
1101 | 0100 |
---|---|
D | 4 |
转换为十六进制为:\(1A6.D4H\)
十六进制->二进制
只需将每一位十六进制对应的4位二进制表示出即可。
例:\(7FD3.5CH\)转换为二进制数。
7 | F | D | 3 | 5 | C |
---|---|---|---|---|---|
0111 | 1111 | 1101 | 0011 | 0101 | 1100 |
\(0111 1111 1101 0011.0101 1100B\)
十进制->十六进制
整数部分:除16取余,最低位\(\Rightarrow\)最高位
小数部分:乘16取整,最高位\(\Rightarrow\)最低位
例:\(47632.78125\)转换为十六进制。
整数部分:
除16 | 余数 | |
---|---|---|
\(47632/16=2977\) | 0 | 最低位 |
\(2977/16=186\) | 1 | |
\(186/16=11\) | 10(A) | |
\(11/16=0\) | 11(B) | 最高位 |
小数部分:
乘16 | 取整 | |
---|---|---|
\(0.78125*16=12.5\) | 12(C) | 最高位 |
\(0.5*16=8\) | 8 | 最低位 |
\(0BA10.C8H\)
十六进制->十进制
按权(16)展开即可
例:\(0BA10.C8H\)转换为16进制。
\(0BA10.C8=B(11)*16^3+A(10)*16^2+1*16^1+0*16^0+C(12)*16^{-1}+8*16^{-2}=47632.78125\)
1.2数的表示
无符号数:所有数码均用来表示数值,没有表示+,-的部分。
符号数:二进制中最高位为符号位,“0”代表正号,“1”代表负号。其余位为数值部分。
机器数:符号数(包括符号位)在机器中的一组二进制数表示形式,称为机器数。
真值:机器数所表示的数值。 一字节表示8位二进制数
原码
二进制数最高位用“0”表示,用“1”表示负数,其余位表示数值。
例:
\([+100]_原=0(110 0100)\)
\([-127]_原=1(1111111)\)
显然8位二进制原码的范围为:\(-127 - +127\)
0的表示:\([+0]_原=0(0000000)\) \([-0]_原=1(0000000)\)
反码
正数反码与原码相同。
负数反码为对应正数的按位取反。
例:
\([+100]_原=[+100]_反=0(1100100)\)
\([-100]_反=1(0011011)\)
0的表示:\([+0]_反=0(0000000)\) \([-0]_反=0(1111111)\)
补码
正数的原码与反码补码均相同。
负数的补码是将其对应正数按位求反加1形成。
例:
\([+100]_原=[+100]_反=[+100]_补=0(1100100)\)
\([-100]_补\)
按位求反:\(1(0011011)=1(16+8+2+1)=1(27D)\) 其中括号外为符号位,括号内为取反后对应的十制数
加1 \(1(27+1)=1(0011100)\)
故\([-100]_补=1(0011100)\)
补码范围:\(-128-+127\)
\([-128]_补=1(0000000)\)真值为\((1111111)+1=128D\)
加减法
例:\(X=64,Y=8\),求\(X+Y=?\)
\([X]_补=0(1000000)\) \([Y]_补=0(0001000)\)
\(X+Y=[X+Y]_补=01001000B=72\)
例:\(X=78,Y=-100\),求\(X+Y=?\)
\([X]_补=0(1001110)\) \([Y]_补=1(0011100)\)
\([X+Y]_补=1(1101010)B=-106D\)
\(X+Y=1(0010101B+1)=1(0010110)=(-22D)\)
例:\(X=-78,Y=-15\),求\(X-Y=?\)
\([X]_补=1(0110010)\) \([Y]_补=1(1110001)\)
再对\([-Y]_补=0(0001110+1)=0(0001111)\)
\([X-Y]_补=1(1000001)=-65D\)
\([X-Y]=1(0111110+1)=1(0111111)=-63\)
溢出:运算结果超出补码所表示的范围。
判断溢出:异号相加或同号相减不会溢出;
同号相加或异号相减可能会溢出,运算后若符号位与参加运算的符号相反表明溢出。
BCD码(压缩)
用四位二进制编码表示一位十进制数,从左到右的权为8421。
例:9521D
9 | 5 | 2 | 1 |
---|---|---|---|
1001 | 0101 | 0010 | 0001 |
\(9521D=(1001-0101-0010-0001)_{BCD}\)
BCD码计算
运算结果某位大于9或进位时,对其加0110(6)。
例:\(27+82=?\)
高四位\((1010)_B=10D>9\)
结果为:\((0001)(0000)(1001)_B=109D\)
例:\(88+89=?\)
十位个位均出现进位:均需加(0110)B
结果为:\((0001)(0111)(0111)_B=177D\)
字符编码
ASCII码由7位二进制编码组成。
用‘ ’把字符括起来,即表示字符的ASCII码。
\(A-Z\)ASCII码为\(41H-5AH\)
\(a-z\)ASCII码为\(61H-71H\)
\(0-9\)ASCII码为\(30H-39H\)
ASCII的最高位即第八位,一般作校验位。
奇校验:包含校验位在内的8位二进制数,1的个数之和必须为奇数。
偶校验:包含校验位在内的8位二进制数,1的个数之和必须为偶数。
浮点数与定点数
定点数:
整数
符号位 | HSB | ...... | LSB | 小数点 |
---|
小数
符号位 | 小数点 | HSB | ...... | LSB |
---|
浮点数
二进制权为2,如1101.101可表示为\(0.1101101*2^4\)或\(0.001101101*2^6\)
所以任何一个二进制数可表示为:
M为尾数表示二进制数的全部有效数字。
\(M_f\)为尾符,代表符号位。
E为阶码指出小数点在数据中的位置。
结构:
Ef | ...... | Mf | ...... |
---|---|---|---|
阶符 | 阶码 | 尾符 | 尾数 |
如:0 (1 0 0 0)0 (1 1 0 1 1 0 1)
阶符 阶码 尾符 尾数
浮点规格化数:M的绝对值小于1大于等于1/2即小数点后第一位必须为1。