计算机码制和浮点数的学习思考

码制(以下讨论带符号数的表示方法)

原码 0的表示方法(+0)=(0 0000000)2,(-0)=(1 0000000)2

反码 0的表示方法(+0)=(0 0000000)2,(-0)=(1 1111111)2

补码 0的表示方法(+0)=(0 0000000)2,(-0)=(0 0000000)2

移码 0的表示方法(+0)=(1 0000000)2,(-0)=(1 0000000)2

补码变成原码,除符号位外,按位求反再加1,例如:(1 1111100)按位求反,1 0000011,再加上1为(1 0000100)

补码作用:使符号位有效地参与运算,简化运算规则,进而使得减法转为加法参与运算,简化了计算机的运算器的电路。

浮点数表示方法和IEEE754

注:以下◇表示小数点

二进制浮点数的表示方法与十进制的科学计数法类似,只是十进制的以10的n次幂,二进制的以2的n次幂表示,即其基数分别为10和2,指数n只表示位移n(左/右)。

例如(1011◇10101)2=(11.65625)10可以写成(0◇101110101)2×(24)=(0.728515625)10×(24)=(11.65625)10      【注意这里的24不变】

所谓规格化浮点数,就是将浮点数的尾数的绝对值限定在一个范围内,参照十进制科学计数法,就是规定小数点的位置,若将尾数M的十进制绝对值限定在[0.5,1]区间,采用补码表示则为M≧0,则M=0.1XXX…X,[0.5,1];M≦0,则M=1.0XXX…X,[-1,-0.5];X可以为0或1。故而浮点数的精度取决于尾数的宽度,范围则取决于基数的大小和指数的宽度。

IEEE754标准,约定左边隐含一位,通常为1,其表示形式为S E (b0 b1 b2 b3…bp-1),S为0表正数/1表负数,E为指数或阶码, (b0 b1 b2 b3…bp-1)为尾数,p为尾数的长度。例如(176.0625)10 =(10110000◇0001)2,将其表示为单精度浮点数,规格化处理后10110000◇0001=1◇01100000001×(27),去掉◇前的1,将◇后的数字扩充为23位(单精度为23,双精度为52,扩充精度为64),即01100000001000000000000;指数7偏移127(单精度为127,双精度为1023,扩充精度为16383,使用移码的好处可以使指数没必要考虑负值),得到(134)10=(10000110)2;最后得到表示形式为:0 10000110 01100000001000000000000。

浮点数的运算:

1.加减

1)对阶,是两个数的阶码相同,令K=|i-j|,把阶码小的数的尾数右移K位,即阶码加上K;

2)求尾数和/差;

3)结果规格化并判断溢出;

4)舍入;

5)溢出判断。阶码溢出则结果溢出,阶码下溢(小于最小值)则结果为0;否则结果无溢出。

定点数的溢出判断为:

方法一两个正数相加,若符号位变为1则溢出,两个负数相加,如符号位变为0则溢出;

方法二在符号位增加一个符号位,运算结束后若两个符号位相同则没有溢出,不同则溢出;

方法三通过进位信号,当结果的最高位和符号位的进位信号一致时,则没有溢出。

2.乘除(与十进制类似,但最后要结果规格化处理并判断是否溢出)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值