第⼆章运算⽅法与运算器(浮点数的加减法,IEEE754标准3264浮点规格化数)
这⼀章,主要介绍了好多种计算⽅法。下⾯,写⼀点⾃⼰对于有些计算(⼿写计算过程)的见解。
1.原码、反码、补码
原码:相信⼤家都会写,符号位在前⼆进制数值在后,凑够位数即可。
反码:原码符号位不变,其他位全部取反。
补码:反码末位加⼀ / 原码符号位不变,从右往左数第⼀个1及其右边的各位不变,其余位全部取反
2.IEEE754的转换
IEEE754标准32/64浮点规格化数形式:X = (-1)S * 1.M * 2E-127(其中,S-阶符,M-尾数,E-阶码)
32位的规格化浮点数:(即⼆进制SEM后⾯补0,写够32位)
以27/64为例:
①化形式:27/64 = + (1.1011)2 * 2-2
②SEM:S=0,M=1011,E=(125)10=(01111101)2
③写结果:00111110 11011000 00000000 00000000 = (3ED800)16
3.变形补码计算加减法
变形补码没什么稀奇,不过是符号位变成两位⽽已(00为正,11为负),它的价值在于可以作溢出判断(结果00//11表⽰未溢出,01-上溢(所谓上溢符号位还是0),11-下溢(下溢符号位还是1)),就正常求补码(符号位double),放在⼀起加和,做溢出判断,最后别忘了把补码再转换回原码作为最终结果。
x+y:
以x=11011, y=00011为例:
①求补:[11011]补=0011011, [00011]补=0000011
②加和:011011 + 000011 = 0011110;符号位00,未溢出,故x+y=11110
x-y:(这⾥把减法化为加法,即 x-y = x+(-y),另外[-y]补 = [y]补 从右往左数第⼀个1及其右边的各位不变,其余位全部取反,这次连带符号位也要取反)
以x=11011, y=-11111为例:
①求补:[11011]补=0011011, [-11111]补=1100001,[-y]补=0011111
②加和:[x]补+[-y]补 = 0011011 + 0011111 = 0111010;符号位01,正溢(上溢);故x-y=+111010
4.浮点数加减法(我⽤的是补码计算)
这⾥⾯涉及的东西⽐较多,每⼀步都需要仔细,错⼀步结果就错了。
①求补对阶
②尾数求和
③规格化加减符号
④舍⼊处理
⑤溢出判断
⑥写结果
例⼦后⾯给
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论