电子说
在计算机中,无论是何种形式的数据均采用数字化形式表示,即用“0”、“1”两个基本符号构成的编码表示,以便采用数字电路实现其存储与处理。
二进制阅读、书写不方便,引入八进制、十六进制。它们与十进制之间以及相互之间如何转换?
各种数制
数制之间的转换
十进制转换二进制,常用凑数法。
以小数点为中心,向左右两边4位一组,不够4位的左边前补0,右边后补0,然后把每4位写出对应的十六进制数。
将每一个十六进制数码写成对应的4位二进制码,前后的无效0去掉。
二进制与八进制间的互换与十六进制间的互换类似。
真值
正号(+)、负号(-)加二进制或者十进制的数值表示数据大小的形式在计算机原理中称为真值。 如:+1011101B,或 -123.45
其中:“+”号经常省略。
机器数
数据在计算机中存储或处理的数据形式称为机器数。
正、负号也要用0、1表示。
机器数分有无符号数和有符号数。
无符号数
整个机器字长的二进制位均为数值位,没有符号位。相当于数的绝对值。
例如:10000011B表示十进制无符号数的131。
字长为n位的无符号数的表示范围为0~2(n)-1。
若字长为8位,则表示无符号数的范围为0~255。
有符号数
约定:机器字的最高位为符号位,其余位为数值部分。一般“0”表示正数,“1”表示负数。
例如:真值为-1011101B的机器数可以表示为:
11011101。
符号位和数值位如何联合表示一个数?计算机中有多种编码形式,以适应不同的应用场合的需要。常用的编码形式有:
一、原码
最高位为符号位,0表示正,1表示负,的数值部分为真值绝对值。
即:除去符号用0或1表示外,其余部分与真值(二进制)相同。
例如,8位机中,x=+1001101时,x=01001101
x=-1001101时,x=11001101
再如,5位机中,x=+0.1001时, x=0.1001
x=-0.1001时, x=1.1001
若真值x为纯整数数,n位机中:
若真值x为纯小数,n位机中:
根据原码的定义,0的原码有两种不同的形式:
原码表示的数据范围
纯整数n位机中:
纯小数n位机中:
优点:直观易懂,与真值之间转换简单;
实现乘、除法运算规则简单。
缺点:实现加、减运算的规则较复杂,电路实现困难。
二、反码
定义
正数的反码和原码相同;
负数的反码是将原码中符号位不变,数值部分中的各位变反。
例如:
8位纯整数机中,
8位纯小数机中,
反码特点
0的反码也有两种不同的形式:
表示的数据范围与原码一样:
纯整数n位机中:
纯小数n位机中:
三、补码
是否能将减法运算化为加法?
(1)模和补数
逆时针拨2小时,或顺时针拨10小时。
前者代表8-2=6,后者可以认为是8+10=6(mod 12)。
在模为12时,-2和+10等价。称-2的补数是10。
补码定义
有符号数x的补码定义为:
对于n位纯整数机,其模为2(n) ,数x的补码为:
对于n位纯小数机,其模为2 ,数x的补码为:
按照定义求补码
补码****表示的数据范围
注意:
补码表示的数据范围比原码在负数方向多一个值。
补码中,100...0中的最高位1既表示符号,又是数值位。
如,8位整数机,10000000是-128的补码;
8位小数机,1.0000000是-1的补码。
根据补码的定义,0的补码表示只有形式:000…0
定点格式表示的数据范围
有符号数的编码不同,所表示的数据范围不同。
四、移码
移码主要用于表示浮点数的阶码。由于阶码是整数,这里只讨论x是整数时的移码。
注意 : 移码符号位****的表示规律与原码、反码、补码的相反。
移码特点
如果将移码看作无符号数,其大小直观地反映了真值的大小。移码全为0时,所对应的真值最小,全为1时,所对应的真值最大。因此,浮点数的指数(阶码)常用移码表示。这样比较两个浮点数大小时,阶码编码大数就大。
四种编码小结
各有所长,分别使用在不同的场合。补码表示时加减运算方便,目前机器中广泛采用补码存储和运算。有些机器做加减运算时采用补码,做乘除运算时采用原码。移码主要用于表示浮点数的阶码。
同一个二进制码,所表示的含义不同,相对应的实际值不同。下表给出8位二进制码00000000~11111111含义不同时,与其实际值之间的相应关系。
在计算机中,小数点的问题如何解决?
计算机中,没有专门设置电路来表示数据的小数点,而是采用不同的数据格式约定小数点的位置。
常用的数据格式:
定点格式
约定机器中小数点在数据编码中的位置固定不变。
由于已约定,机器中不再用“.”记号表示。
任意n位定点数x,在计算机中的格式为:
理论上讲,小数点可以固定在任何位置。但计算机设计时通常将数据设定为纯小数和纯整数两种。
定点格式表示的数据范围
有符号数的编码不同,所表示的数据范围不同。
浮点格式—浮点数
其中:
例如,二进制数101.00101的浮点数形式可以写成:
浮点格式— 一般格式
基数约定为2,阶码E和尾数M是有符号数。
浮点格式—表示的数据范围
浮点格式—表示的数据范围
32位浮点格式,阶码8位(阶符1位)移码表示;尾数24位(含数符1位)补码表示。其能表示的数据范围:
显然,浮点格式表示的数据范围比定点格式要大很多
浮点格式—机器零
机器零的规定:
浮点格式—规格化
同一数的浮点表示形式是不唯一的。
例如:二进制数101.00101的浮点数可以写成:
规格化的概念
为了充分利用尾数有限的位数,提高运算的精度,存储数据中尽可能多是有效数字。
规定:浮点数尾数值不为0时,其最高数值位应是有效位,即尾数的绝对值应大于或等于0.5。这种形式的浮点数称为规格化浮点数。
规格化浮点数的形式
编码 0.1001000的浮点数是规格化;
编码 1.0000100的浮点数也是规格化;
编码0.1001000的浮点数是规格化;
编码1.1000100的浮点数也是规格化;
尾数采用原码表示时,尾数最高数值为1。如:8位尾数,
尾数采用补码表示时,尾数符号和最高数值位一般应为01或10的形式。如:8位尾数,
注意一种特例:当尾数补码表示,尾数值是-0.5时,其对应的补码为1.1000000,不是01或10的形式,也满足规格化要求。
规格化处理
方法:对尾数进行移位,直到满足上述规格化要求。尾数每左移一位,阶码减1;尾数右移一位,阶码加1。
浮点格式—IEEE754浮点格式
为了便于软件的移植,1985年IEEE(Institute of Electrical and Electronics Engineers)制定了IEEE754浮点格式标准。
IEEE754浮点格式:
阶码E移码表示 (-3+127) = 124 = 0111 1100
尾数原码表示,且尾数整数部分为1,缺省存储
真值为:
单精度浮点数格式:
双精度浮点数格式:
说明:阶码为全0和全1规定表示一些特殊的数值:
十进制数有两种存储和处理形式:字符串和压缩的十进制数串。
1.字符串形式
2.压缩的十进制数串形式
一个字节存放两位十进制数的BCD码,常采用8421码。
符号也用4位二进制编码表示,存放在最低数值位之后。
例如,-2648的的压缩十进制数串表示为:
节省存储空间,便于算术运算,广泛采用。
【知识拓展】 BCD码
用4位二进制数表示一位十进制数的编码称为BCD码(Binary Code Decimal)。
从4位二进制的16个编码中选取10个编码表示十进制的10个数码,方法可以有很多种。常用的有8421码、2421码、余3码、Gray(格雷)码等。
全部0条评论
快来发表一下你的评论吧 !