计算机硬件基础
1-各种进制
R进制,通常说逢R进1,可以用0,1,2....R-1
二进制:
八进制:
十六进制:
2-数值计算
对于任意一个R进制数,它的每一位数值等于该位的数码乘以该位的权数。
权数由Rk表示,k与该位和小数点之间的距离有关。该位位位于小数点左边,k值是该位和小数点之间数码的
个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码个数加1
十进制:1234.56
1234.56=1*10^3+2*10^2+3*10^1+4*10^0+5*10^-1+6*10^-2
3-数制转换
十进制转化为R进制利用“除以R取余数法”。例如:
余数
2|94 0
2|47 1
2|23 1
2|11 1
2|5 1
2|2 0
2|1 1
余数从下往上排列即可,即得1011110
十进制小数利用乘2取整数转换为二进制小数
十进制小数0.43转换成二进制小数的过程如下(假设要求小数点后取5位)
0.43
0.43×2=0.86 0
0.86×2=1.72 1
0.72×2=1.44 1
0.44×2=0.88 0
0.88×2=1.76 1
0.76
从上往下可得转换后的二进制小数0.01101B
2^4 二进制在转换为十六进制时,可从小数点开始,往前每四位转换成对应的十六进制即可,往后每四位转换成十六进制即可,不
够四位的补0即可。
比如 10 1011.1111 1B=0010 1011 . 1111 1000
=2B.F8
2^3 同理,二进制在转换成八进制时,可从小数点开始,往前每三位转换成对应的十六进制即可,往后
每三位转换成十六进制数即可,不够S三位补0即可。比如:
1 011 . 111 11 B =13.76O
二进制编码
原码:
定点整数原码的定义如下(n表示数值位位数,不包括符号位):
[X]原= X 0<=X<2^n
2^n-X-2^n -2^n<X<=0
例如:X=+0110,则[X]原=00110 X=-0110,则[X]原=10110
定点小数原码的定义:
[X]原=X 0<=X<1
[X]原=1-X -1<X<=0
例如:X=+0.1011,则[X]原=01011
X=-0.1011,则[X]原=11011
在原码中,数值0对应两种形式:[+0]=0 0000000 [-0]=1 0000000
移码:
设由1位符号位和n位数值位组成的阶码,则[X]移=2^n+X (-2^n<=X<=2^n)
例如:
X=+1011 [X]移=11011 符号位“1”表示正号
X=-1011 [X]移=00101 符号位“0”表示符号
注意:移码只用于表示浮点数的阶码,所以只用于整数。
[X]移与[X]补的关系是符号位相反:
例如:
X=+1011 [X]移=11011 [X]补=01011
X=-1011 [X]移=00101 [X]补=10101
浮点数编码:
给定同样长度的编码位数,浮点数的表示范围比定点数大得多。
若一位二进制N用科学计数法表示为:N=2^E×F,其中E称为阶码,F为尾数。
利用这种方法表示的数为浮点数,其编码格式如下:
阶符 阶码E 数符 尾数F
移码 补码
123D=0 10111 0 1111011000
IEEE754工业标准
(-1)^s * 2^E (b0 b1 b2 bp-1 ) 其中(-1)^s为数符,s=0时表示正数,s=1 时
表示负数,E为阶码,用移码表示;(b0 b1 b2 bp-1)为尾数,长度为p,用原码表示。
在该标准的单精度浮点数中,总编码长度为32位,p为23位,符号占一位,阶码占8位。
在该标准中,约定小数点左边隐含一位1,因此单精度的有效位为24位,即尾数为1.
例如:将176.0625表示为符合IEEE754标准的单精度浮点数。
首先将176.0625化为二进制:176.0625D=10110000.0001B
规格化处理:10110000.0001=1.01100000001*2^7
去掉b0,并扩展成23位尾数:01100000001000000000000
求阶码的移码:[7]移=10000110
于是得到其标准形式为:0 10000110 0110000000 10000000000000
BCD码
数值,文字,英文字母和汉字都被认为是字符,将其转换成对应的二进制表示称为字符编码。
用四位二进制代码来表示一位十进制数,称为二 ---十进制编码,简称BCD码。根据代码的每一位
是否有权值可分为有权码和无权码两类,应用最多的是8421码,无权码用的最得较多的是余三码和格雷码。这些编码根十进制数
对应的关系如下:
十进制 8421BCD码 余3BCD码 格雷码
0 0000 0011 0000
1 0001 0100 0001
2 0010 0101 0011
3 0011 0110 0010
4 0100 0111 0110
5 0101 1000 1110
6 0110 1001 1010
7 0111 1010 1000
8 1000 1011 1100
9 1001 1100 0100
BCD码加法修正:
当两8421BCD码相加之和大于1001且向高位有进位时,必须进行加6修正:
如:9+9表示BCD码为:1001+1001=0001 0010,0001 0010所表示的十进制数为:12,
而9+9的结果应是:18,所以要进行加6修正,也就是:
0001 0010
+ 0110
0001 1000
使用余三码进行计算时,从最高位产生的进位是真正的进位,对每4位的结果,如果小于等于9的
则减3,如果大于9,则加3.如:9+8,余三码表示为:1100+1011=0001 0111 由于0001·0111都小于9
所以都加3,进行调整得:0100 1010 又如:2+3,余三码表示为0101+0110=1011 由于1011大于9所以减去3,进行
调整得:1000.
ASCII码
采用7位二进制编码(其实是8位,最高一位固定为0):低四位用做行编码,高三位用做列编码,比如,
“a” 对应的ASCII码为110 0001 ,在ASCII表中的第0001行和第110的交叉处便可查到字母“a”。
低4位 高三位
000 ... 110 111
0000 NUL p
0001 SOH a q
... ... ... ... ...
1111 SI ... o DEL
汉字编码
区位码:区位码将GB2321-80方案中的字符按其位置划分为94个区,每个区94个字符,区的编号是从1~94,区号
字符编码也是从1~94,区号和区内编码各占一个字节。比如“常”字在第19区中排第3,各化成十六进制为13H,03,因此
其区位码为1303H。
国标码:国标码又称为汉字交换码,就是国家标准局规定的GB2312-80信息交换用汉字编码集,在计算机之间
交换信息用。用两个字节来表示,每个字节的最高位均为0,因此可以表示的汉字数214=16384个。将汉字区
位码的高位字节,低位字节各加十进制32(即20H),便得到国标码。例如“常”字的国标码为3323H。
机内码:汉字机内码是计算机内部存储,处理,传输汉字用的代码,又称汉字机内码,汉字内码。无论使用何种输入码
,进入计算机后立即被转换为机内码。规则是将国标码的高位字节,低位字节各自加上128D或80H。这样做的目的
是使汉字内码区别于西方的ASCII,因此每个西方字母的ASCII的高位均为0,而汉字内码的每个字节的高位均为1.
“大”的国标码为3473H,其机内码就是B4F3H。
UCS
为了统一表示世界各国的文字,使用4字节的二进制位来表示字符,从低到高每个字符分别指定该字符所位于的
组,平面,行和字位。例如,“大”字在UCS中的编码为00005927H,它就处于00H组,00H平面,59H行,第27H字位上。
UCS中的00H组00H平面称为基本多文种平面,包含西文字母,音节字母及表意文字,其分为四个区:
A区:0000H~4DFFH 西文
I区:4E00H~9FFFH 中 韩 日
O区:A000H~DFFFH 留未来标准化
R区:E000H~FFFDH 专用字符,兼容字符。
1-各种进制
R进制,通常说逢R进1,可以用0,1,2....R-1
二进制:
八进制:
十六进制:
2-数值计算
对于任意一个R进制数,它的每一位数值等于该位的数码乘以该位的权数。
权数由Rk表示,k与该位和小数点之间的距离有关。该位位位于小数点左边,k值是该位和小数点之间数码的
个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码个数加1
十进制:1234.56
1234.56=1*10^3+2*10^2+3*10^1+4*10^0+5*10^-1+6*10^-2
3-数制转换
十进制转化为R进制利用“除以R取余数法”。例如:
余数
2|94 0
2|47 1
2|23 1
2|11 1
2|5 1
2|2 0
2|1 1
余数从下往上排列即可,即得1011110
十进制小数利用乘2取整数转换为二进制小数
十进制小数0.43转换成二进制小数的过程如下(假设要求小数点后取5位)
0.43
0.43×2=0.86 0
0.86×2=1.72 1
0.72×2=1.44 1
0.44×2=0.88 0
0.88×2=1.76 1
0.76
从上往下可得转换后的二进制小数0.01101B
2^4 二进制在转换为十六进制时,可从小数点开始,往前每四位转换成对应的十六进制即可,往后每四位转换成十六进制即可,不
够四位的补0即可。
比如 10 1011.1111 1B=0010 1011 . 1111 1000
=2B.F8
2^3 同理,二进制在转换成八进制时,可从小数点开始,往前每三位转换成对应的十六进制即可,往后
每三位转换成十六进制数即可,不够S三位补0即可。比如:
1 011 . 111 11 B =13.76O
二进制编码
原码:
定点整数原码的定义如下(n表示数值位位数,不包括符号位):
[X]原= X 0<=X<2^n
2^n-X-2^n -2^n<X<=0
例如:X=+0110,则[X]原=00110 X=-0110,则[X]原=10110
定点小数原码的定义:
[X]原=X 0<=X<1
[X]原=1-X -1<X<=0
例如:X=+0.1011,则[X]原=01011
X=-0.1011,则[X]原=11011
在原码中,数值0对应两种形式:[+0]=0 0000000 [-0]=1 0000000
移码:
设由1位符号位和n位数值位组成的阶码,则[X]移=2^n+X (-2^n<=X<=2^n)
例如:
X=+1011 [X]移=11011 符号位“1”表示正号
X=-1011 [X]移=00101 符号位“0”表示符号
注意:移码只用于表示浮点数的阶码,所以只用于整数。
[X]移与[X]补的关系是符号位相反:
例如:
X=+1011 [X]移=11011 [X]补=01011
X=-1011 [X]移=00101 [X]补=10101
浮点数编码:
给定同样长度的编码位数,浮点数的表示范围比定点数大得多。
若一位二进制N用科学计数法表示为:N=2^E×F,其中E称为阶码,F为尾数。
利用这种方法表示的数为浮点数,其编码格式如下:
阶符 阶码E 数符 尾数F
移码 补码
123D=0 10111 0 1111011000
IEEE754工业标准
(-1)^s * 2^E (b0 b1 b2 bp-1 ) 其中(-1)^s为数符,s=0时表示正数,s=1 时
表示负数,E为阶码,用移码表示;(b0 b1 b2 bp-1)为尾数,长度为p,用原码表示。
在该标准的单精度浮点数中,总编码长度为32位,p为23位,符号占一位,阶码占8位。
在该标准中,约定小数点左边隐含一位1,因此单精度的有效位为24位,即尾数为1.
例如:将176.0625表示为符合IEEE754标准的单精度浮点数。
首先将176.0625化为二进制:176.0625D=10110000.0001B
规格化处理:10110000.0001=1.01100000001*2^7
去掉b0,并扩展成23位尾数:01100000001000000000000
求阶码的移码:[7]移=10000110
于是得到其标准形式为:0 10000110 0110000000 10000000000000
BCD码
数值,文字,英文字母和汉字都被认为是字符,将其转换成对应的二进制表示称为字符编码。
用四位二进制代码来表示一位十进制数,称为二 ---十进制编码,简称BCD码。根据代码的每一位
是否有权值可分为有权码和无权码两类,应用最多的是8421码,无权码用的最得较多的是余三码和格雷码。这些编码根十进制数
对应的关系如下:
十进制 8421BCD码 余3BCD码 格雷码
0 0000 0011 0000
1 0001 0100 0001
2 0010 0101 0011
3 0011 0110 0010
4 0100 0111 0110
5 0101 1000 1110
6 0110 1001 1010
7 0111 1010 1000
8 1000 1011 1100
9 1001 1100 0100
BCD码加法修正:
当两8421BCD码相加之和大于1001且向高位有进位时,必须进行加6修正:
如:9+9表示BCD码为:1001+1001=0001 0010,0001 0010所表示的十进制数为:12,
而9+9的结果应是:18,所以要进行加6修正,也就是:
0001 0010
+ 0110
0001 1000
使用余三码进行计算时,从最高位产生的进位是真正的进位,对每4位的结果,如果小于等于9的
则减3,如果大于9,则加3.如:9+8,余三码表示为:1100+1011=0001 0111 由于0001·0111都小于9
所以都加3,进行调整得:0100 1010 又如:2+3,余三码表示为0101+0110=1011 由于1011大于9所以减去3,进行
调整得:1000.
ASCII码
采用7位二进制编码(其实是8位,最高一位固定为0):低四位用做行编码,高三位用做列编码,比如,
“a” 对应的ASCII码为110 0001 ,在ASCII表中的第0001行和第110的交叉处便可查到字母“a”。
低4位 高三位
000 ... 110 111
0000 NUL p
0001 SOH a q
... ... ... ... ...
1111 SI ... o DEL
汉字编码
区位码:区位码将GB2321-80方案中的字符按其位置划分为94个区,每个区94个字符,区的编号是从1~94,区号
字符编码也是从1~94,区号和区内编码各占一个字节。比如“常”字在第19区中排第3,各化成十六进制为13H,03,因此
其区位码为1303H。
国标码:国标码又称为汉字交换码,就是国家标准局规定的GB2312-80信息交换用汉字编码集,在计算机之间
交换信息用。用两个字节来表示,每个字节的最高位均为0,因此可以表示的汉字数214=16384个。将汉字区
位码的高位字节,低位字节各加十进制32(即20H),便得到国标码。例如“常”字的国标码为3323H。
机内码:汉字机内码是计算机内部存储,处理,传输汉字用的代码,又称汉字机内码,汉字内码。无论使用何种输入码
,进入计算机后立即被转换为机内码。规则是将国标码的高位字节,低位字节各自加上128D或80H。这样做的目的
是使汉字内码区别于西方的ASCII,因此每个西方字母的ASCII的高位均为0,而汉字内码的每个字节的高位均为1.
“大”的国标码为3473H,其机内码就是B4F3H。
UCS
为了统一表示世界各国的文字,使用4字节的二进制位来表示字符,从低到高每个字符分别指定该字符所位于的
组,平面,行和字位。例如,“大”字在UCS中的编码为00005927H,它就处于00H组,00H平面,59H行,第27H字位上。
UCS中的00H组00H平面称为基本多文种平面,包含西文字母,音节字母及表意文字,其分为四个区:
A区:0000H~4DFFH 西文
I区:4E00H~9FFFH 中 韩 日
O区:A000H~DFFFH 留未来标准化
R区:E000H~FFFDH 专用字符,兼容字符。