网上关于这个问题的基础内容有很多文章了,比如:
计算机组成原理_浮点数的表示与运算_浮点数左规右规是算术移位-CSDN博客
计算机系统基础:浮点数的表示 - 知乎
【计算机组成原理】1、浮点数的二进制表示、科学计数法、IEEE754标准_浮点数二进制-CSDN博客
浮点数加、减运算步骤_浮点数运算-CSDN博客
浮点数的基础知识 - 知乎
还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他 - 知乎
我就不再重复写了,我这里写一些我在看的过程中发现的一些没怎么被提到的小内容。
1.阶码数值
大家都知道以IEEE754 标准来说,对于单精度浮点数,阶码要在指数数值上加上127(2^(8-1) - 1),对于双精度浮点数,要加上1023(2^(11-1) - 1)。在计算机中,准确的来说是对指数的补码加上127(0111 1111)。
这里用单精度举例,若指数为-2,那么阶码就应该为-2(补码 :1111 1110)+127(0111 1111) = 125(0111 1101)。对于正数,补码和自身相同,以2举例:2(补码:0000 0010)+ 127(0111 1111)= 129(1000 0001)。
同样若知道阶码,也可以通过 阶码 - 127(0111 1111)得到指数的补码
2.规格化处理
提到的左规、右规,都是指对尾数的左移和右移,而不是对小数点的左右移动(请原谅我小学老师教我十进制规格化时,都是说小数点左移还是右移,到左规和右规时反了过来,还懵了一下)