大多数题目的分数其实都是真分数,换言之就是定点小数的求法,不同的是分母往往为的形式,这为我们化简提供了便利,在这里以为例。
(CSDN的公式显示不出来中文,用荧光笔强调了。)
原码
先假设一道十进制的题目,= -0.0000023,即将小数点向左移动7位。
同理到二进制,将原题改变一下形式:= -0.0010111,
然后将真值改为原码,因为是负数,符号位为1
所以[-23/128]_原 = 1.0010111
反码
反码是原码转补码的一个过渡。
原码符号位为0时,[X]_原 = [X]_反
原码符号位为1时,将[X]_原的数值位全部取反,符号位不动。
补码
正数时,[X]_原 = [X]_反 = [X]_补
负数时,
方法一:[X]_补 = [X]_反 + 1,即数值位取反再加一,能进位的要进位,符号位照抄。
方法二:从右往左找到第一个1,这个1左边所有的数值位取反,符号位照抄。
注:补码再用一次求补码的方法就会变回原码
移码
[X]_补的符号位取反就得到了[X]_移,移码只能表示整数,因此分数不存在移码。
说明
上文提到的求反码、补码、移码的方法是通用的,不局限于分数。