🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 浮点数的运算 例子: `$ x=0.110\times 2^{01} $` `$ y=(-0.1010)\times 2^{11} $` ### 1.对阶 ``` [阶码符号位][阶码数值位][尾数符号位][尾数数值位] 00 0001 00 1101 00 0011 11 1010 x向y对阶,x尾数右移两位 x=0.001101x2^11 [阶码符号位][阶码数值位][尾数符号位][尾数数值位] 00 0011 00 001101(01) 00 0011 11 1010 ``` 符号位使用双符号,可以进行溢出判断 ### 2.尾数求和 - 使用补码进行运算 ``` x[原]=00.0011 [补]=00.0011 y[原]=11.1010 [补]=1.0110 S=(x+y)[补] = 11.1001 [阶码符号位][阶码数值位][尾数符号位][尾数数值位] 00 0011 11 1001 ``` ### 3.尾数规格化 ``` S[补]=00.1xxxxxx (S>0) S[补]=11.0xxxxxx (S<0) ``` ``` S=(x+y)[补]=111001 S=(x+y)补]=11.(1)0010(左移) (1)设置,最末加- [阶码符号位][阶码数值位][尾数符号位][尾数数值位] 00 0010 11 0010 S=(x+y)[补]=11.0010=(x+y)[原]=-0.1110=0.1110×2^10 ``` 1. 一般情况下都是左移 1. 双符号位不—致下需要右移(定点运算的溢出情况) 2. 右移的话则需要进行舍入操作 3. 舍入为"0佘1入"法