计算机中的数据表示
进位计数值及各进制数之间的转换
1、进位计数制
(1)十进制数的表示方法(后缀D或d)
逢十进一;
使用10个数字符号(0,1,2,……,9)的不同组合来表示一个十进制数;
(2)二进制数的表示方法 (后缀B或b)
逢二进一;
使用2个数字符号(0,1)的不同组合来表示一个二进制数;
二进制的优点:
物理上容易实现,可靠性高;
运算规则简单
符合逻辑运算
(3)八进制数的表示方法(后缀O或o)
逢八进一;
使用8个数字(0,1,2...,7)的不同组合来表示一个八进制数
(4)十六进制数的表示方法(后缀H或h)
逢十六进一;
使用16个数字符号(0,1,2,3……,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中A~F 依次表示10~15;
2、不同进制之间的转换
十进制整数——> 非十进制整数
除基取余法:除基数取余数直到商为0,余数由下而上排列。
十进制小数——>非十进制小数
乘2取整法:先用2乘这个十进制纯小数,然后去掉乘积的整数部分;用2乘剩下的小数部分,然后再去掉乘积中的整数部分,如此下去,直到乘积的小数部分为0或者已得到所要求的精确度为止。把上面每次乘积的整数部分依次从上而下排列起来,就是所要求的二进制小数
例:
例2.6 ( 0.8125)10 =( )2
0.8125×2=1.625 (B1=1)
0.625×2=1.25 (B2=1)
0.25×2=0.5 (B3=0)
0.5×2=1.0 (B4=1)
所以 0.8125D=0.1101B
一个有限的十进制小数并非一定能够转换成一个有限的二进制小数,即上述过程中乘积的小数部分可能永远不等于0。
这时,我们可按要求进行到某一精确度为止。由此可见,计算机中由于有限字长的限制,可能会截去部分有用小数位而产生截断误差
如果一个十进制数既有整数部分,又有小数部分,则可将整数部分和小数部分分别进行转换,然后再把两部分结果合并起来。
非十进制数 ——> 十进制数
位权法:把各非十进制数按权展开求和
二进制——> 十六(八)进制
整数从右向左四(三)位并一位
小数从左向右四(三)位并一位
数值型数据表示
整数:一般用定点数表示
(1)无符号整数
所有的二进制数位全部用来表示数的大小
计算机中的地址常用无符号整数表示,可以用8位、16位、32位或64位来表示
(2)有符号整数
规定:最高位为符号位,0表示正,1表示负
数值位表示数的大小
实数:一般用浮点数表示,它的小数点位置不固定
在计算机中一个浮点数由指数(阶码)和尾数两部分组成,阶码部分由阶符和阶码组成,尾数部分由尾符和尾数组成。
其机内表示形式如下:
| 阶符 | 阶码 | 尾符 | 尾数 |
阶码用来指示尾数中的小数点应当向左或向右移动的位数;
尾数表示数值的有效数字,其小数点约定在数符和尾数之间,在浮点数中数符和阶符各占1位。
阶码的值随浮点数数值的大小而定,尾数的位数则依浮点数数值的精度要求而定。
字符型数据表示
字符数据 —— 表示非数值的信息,如英文、汉字、图形、语音等。
原码、反码、补码
一个正数的原码、补码、反码三者完全相同
原码、反码、补码的求法
原码:符号位:0表示正数,1表示负数,数值部分就是该数的绝对值
反码:负数的反码符号位是1,数值部分就是该数的绝对值取反
补码:负数的补码符号位是1,数值部分就是该数的绝对值取反加1
计算机中带符号数用补码表示时有如下优点:
① 可以将减法运算变为加法运算,因此可使用同一个运算器实现加法和减法运算,简化了电路。
② 无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的。
8位二进制数的原码、反码和补码表
二进制数 无符号十进制数 原码 反码 补码
0000 0000 0 +0 +0 +0
0000 0001 1 +1 +1 +1
0000 0010 2 +2 +2 +2
0111 1110 126 +126 +126 +126
0111 1111 127 +127 +127 +127
1000 0000 128 -0 -127 -128
1000 0001 129 -1 -126 -127
1111 1101 253 -125 -2 -3
1111 1110 254 -126 -1 -2
1111 1111 255 -127 -0 -1
信息的编码
1、二进制编码的十进制数(BCD编码)
即将1位十进制的09这10个数字分别用4位二进制码的组合来表示
最常用的是 8421 BCD码
这种编码从0000~1111这16种组合中选择前10个
即00001001来分别代表十进制数码0~9, 8、4、2、1分别是这种编码从高位到低位每位的权值。
BCD码有两种形式,即压缩型BCD码和非压缩型BCD码。
压缩型BCD码用一个字节表示两位十进制数。例如,10000110B表示十进制数86。
非压缩型BCD码用一个字节表示一位十进制数。高4位总是0000,低4位用00001001中的一种组合来表示09中的某一个十进制数。
2、字符的二进制编码(主要采用ASCII码)
(1)EBCDIC码:IBM公司为其大型机设计的字符编码,可表示 2的8次方 = 256 个不同的字符
(2)Unicode码:可表示 2的16次方 = 65536 个不同的字符
(3)ASCII码:美国标准信息交换码,可表示 2的7次方 = 128个字符
3、汉字的二进制编码(了解)
(1)国标码与区位码
(2)机内码
(3)汉字的输入码
(4)汉字的字形码