将定点运算(带位编号)中的二进制补码转换为十进制数

时间:2016-09-14 12:34:33

标签: binary numbers decimal converter number-formatting

我想知道如何将定点运算中的二进制补码转换为十进制数。

所以我们假设我们在二进制补码中得到了这个定点运算:11001011带位编号,小数点后面有2个位置,并希望将其形成十进制数。

我们已经知道小数将是负数,因为第一位是1

小数点后面的

2位置,因此我们有110010 11

将其从两个补码转换为普通形式(sub 1invert):

110010 10(我在此处1

001101 01(我倒在这里)

十进制的

00110113

十进制的

011

所以最后我们到了-13.1。这是正确的还是甚至没有办法转换它?

2 个答案:

答案 0 :(得分:1)

最简单的方法是将整个值转换为整数(最初忽略固定点),然后缩放结果。

因此,对于您的固定点编号为6.2的示例:110010 10

转换为整数:

11001010 = -54

除以比例因子= 2 ^ 2:

-54 / 4 = -13.5

请注意,小数部分始终是无符号的。 (您现在可能会看到10会为小数部分提供+ 0.5,即00 = 0.001 = +0.2510 = +0.511 = +0.75。)

答案 1 :(得分:0)

一个小音符(但对于理解您的问题非常重要)-当您说“小数点”时,您真的表示小数吗?还是“二进制”点。 意思是,如果是小数点,则可以在转换为小数后将其定位,以查看该点右边应保留多少小数位,但是如果您表示二进制点,则意味着二进制表示多少位表示小数部分。 在您的示例中,看来您的意思是二进制点,然后整数部分是001101(bin)= 13(dec),小数部分是0.01(bin)= 0.25(dec),因为第一个位在右边该点代表1/2,第二个代表1/4,依此类推,然后将整个对象求反。 总结果为-13.25