1.机器数和真值
计算机中只能表示0和1两种数码,为了表示正数和负数,需要专门选择一位符号位来表示数的符号,一般选择最高位,符号位为0的时候表示正数,符号位为1的时候表示负数,也就是说数的符号在计算机中数码化了。
我们把一个数在计算机中的表示形式称为机器数,原来实际数的本身的值叫做真值.
机器数的特点:
(1).机器数的正负号数值化;
(2).机器数表示的范围的大小受到机器字长的限制。
位(Bit)的概念: 计算机所能表示的最小数据单位,只有0和1两种状态,表示更大的数就要把更多的位组合起来作为一个整体,每增加一位,所能表示的数就增大一倍.
字节(Byte)的概念:一个字节为8位二进制数,是计算机处理数据的基本单位,微机的存储器是由一个一个存储单元构成的,每个存储单元就是一个字节,因此存储器是以字节为单位编址的,存储容量的大小也是也字节数来度量的。
字(Word)的概念: 计算机处理数据时,CPU通过数据总线一次存取,加工或传送的数据。通常由一个字节或者多个字节构成.
字长(Word Length)的概念: 字的二进制的位数.字长是计算机一次所能处理的实际位数的长度,所以字长是衡量计算机性能的一个重要标志。通常说的计算机是多少多少位的位就是指的字长.
(3).小数点不能直接标出,需要按一定方式约定小数点的位置.
2.符号数的表示方法:
为了解决带符号的机器数在机器中运算时的问题,引出了机器数x的三种不同的编码形式。
设x=x(1) x(2) x(3) ... x(n-1) ,其中x(i)为一位二进制数,i=1,2,...,(n-1),
(1).原码
若x>=0 时, [ x ]原=0 x(1) x(2) ....x(n-1);
若x<=0时, [ x ]原=1 x(1) x(2) ....x(n-1);
根据定义,有
[+0]原=0 0 0 0 0..
[-0 ]原=1 0 0 0 0...
优点:表示简单,与真值转换方便;
缺点:运算时需要判断符号,增加机器的运算时间;
(2)反码
若x>=0 时, [ x ]反=0 x(1) x(2) ....x(n-1);
若x<=0时, [ x ]反=1 x(1) x(2) ....x(n-1);
根据定义,有
[+0]反=0 0 0 0 0..
[-0 ]反=1 111111..
(3).补码
若x>=0 时, [ x ]补=0 x(1) x(2) ....x(n-1);
若x<=0时, [ x ]补=[ x ]反+1;
根据定义,有
[+0]补=0 0 0 0 0..
[-0 ]补=00 0 0 0...
优点:补码便于计算机运算;
3.补码的运算
(1).若x为负数,则[ [x]补 ]补=[ x ]原
(2).=+
该式的语言表达是两个N位二进制数之和的补码 等于两数补码之和。
当带符号两数采用补码形式表示时,进行加法运算可以把符号位和数值位一起进行运算(若符号位有进位,则丢掉),结果为两数之和的补码形式。
(3).=+
该式表明,求可以用与相加来实现。
这里的 ,即对减数进行求负操作,也就是对补码表示的数(无论是正数还是负数)求得其相应的用补码表示的负数(如果原来是正数,求负后得负数,原来是负数,求负后得正数)。一般称已知 求得的过程叫变补或求负。两个带符号数采用补码表示时,减法运算可以通过“变补相 加法”来实现,即 - = +
注:[ -y ]补的求法: 对[ y ]补 "连同符号位在内一起变反加1";
4.补码运算中的溢出的解决方法
(1).使用双符号位.
(2).使用进位
5.定点数和浮点数
(1).定点数就是小数点的位置在数中固定不变.
两种表示方法:定点纯小数和定点纯整数;
(2).浮点表示法;
N=2p S
其中N表示浮点数或者实数,
S表示N的尾数,用带符号的定点小数表示,一般用原码表示;尾数长短规定了数字的有效位数(精度)
2表示N的底数,
p表示指数,称为阶码,用带符号的整数,一般用补码表示;阶码的大小规定了数的范围;
浮点数的表示形式
阶符 阶码 尾符 尾数;
阶符表示阶码的符号位,0表示为正,1表示为负;
尾符表示位数的符号位,0表示为正,1表示为负;
规格化的浮点数: 满足 0.5<= S <1 的限制;
(3) IEEE的浮点数表示方法
6.BCD码
BCD码:
BCD(Binary Coded Decimal)是用二进制编码表示的十进制数(见表3.3),十进制数采用0~9十个数字,是人们最常用的。在计算机中,同一个数可以用两种BCD格式来表示:①压缩的BCD码 ②非压缩的BCD码
压缩的BCD码:
压缩的BCD码用4位二进制数表示一个十进制数位,整个十进制数用一串BCD码来表示。例如,十进制数59表示成压缩的BCD码为0101 1001,十进制数1946表示成压缩的BCD码为0001 1001 0100 0110。
非压缩的BCD码:
非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。例如,十进制数78表示成压缩的BCD码为0000 0111 0000 1000。
从键盘输入数据时,计算机接收的是ASCII码,要将ASCII码表示的数转换成BCD码是很简单的,只要把ASCII码的高4位清零即可。