码制(以下讨论带符号数的表示方法)
原码 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.乘除(与十进制类似,但最后要结果规格化处理并判断是否溢出)