5.5如何以固定点表示
会不会像
a)0000 1011(101.1)
b)55 - > 0011 0111
不能理解定点表示或它们如何工作......如果上面的问题是愚蠢的,我很抱歉...
答案 0 :(得分:3)
通常,在定点表示中,您有一些位数,比如16,并且您指定一个“小数点”(如小数点,但对于您正在使用的任何基数)处于固定位置。例如,对于8位,我们通常将它们解释为整数,因此这些位:
01010111
表示87.使用固定点,我们可以说小数点位于第五位和第六位之间,就好像它们是:
01010.111
然后这些代表10.875(10⅞或87/8)。
小数点实际上并没有出现在内存中;我们只记得以这种方式解释这些比特。
当您希望使用比使用相同位数的整数更小且更精确的值时,定点非常有用。例如,我们不想使用-128,-127,-126,... -3,-2,-1,0,1,2,3,... 126,127,而是使用-16,-7⅞, - 7¾,...-⅜,-¼,-⅛,0,⅛,¼,⅜,...15¾,15⅞。选择小数点的位置取决于适合您应用需求的内容。
处理器可能有一些指令可帮助您使用定点值,但通常使用简单的整数运算。我们必须记住,如果一个位模式在解释为整数时表示值 x ,那么它实际上是 x / q in定点,其中 q 调整我们放置小数点的位置。 (在小数点后有三位, q 是2 3 = 8.。
当加上或减去数字定点数时,我们可以使用整数算术指令。这是因为 x / q + y / q =( x + < EM>ÿ)/ q 。因此,添加(或减去)我们隐式除以 q 的两个整数会产生与已经除以 q 的整数相同的结果。
但是,当我们使用整数乘法指令乘以 x 和 y 时,我们得到的结果就好像小数点位于不同的位置。这是因为 x / q • y / q =( x •< EM>ÿ)/ q 2 。因此,当乘以时,我们必须移位以获得正确的答案。例如,请考虑以下两个值:
00001.100 (12/8)
00010.100 (20/8)
这些产物是(12/8)•(20/8)= 240/64 = 30/8 =3¾。如果我们将它们乘以整数乘法,则16位结果为:
00000000 11110000
由于乘法,现在隐含的小数点后面有6位而不是3位,所以这个值是:
00000000 11.110000
为了进行调整,使用定点的软件通常会将位移位以将小数点放回指定位置,然后它可能会丢弃额外的高位。所以我们会:
00000000 00011.110
然后:
00011.110 (3¾)
除了在乘法后移位位以重置小数点之外,软件还可以保留位,记住小数点位于新位置。
在很大程度上,定点算术是使用分数的分子来计算的,其中分母被内置到软件中。 (因此,如果符合你的目的,你甚至可以使用不是2的幂的分母,但这使得在乘法之后重新调整数字更加困难,因为它涉及除法而不是简单的位移。)
答案 1 :(得分:0)