小数定点机中为什么只有补码能表示-1

2025-03-19 10:04:42
推荐回答(4个)
回答1:

如下都以8位二进制的小数定点机为例展开

原码:  实例1,二进制的0.1010000 = +( 1/2 + 1/8) =0.625

            实例2,二进制的1.1010000  = -( 1/2 + 1/8) =-0.625

结合上例8位小数定点机数据格式:s.xxxxxxx

根据原码的含义,1.0以至于-1.0都超出了小数定点机的表示能力。由于原码表示不了1.0以至于-1.0,所以,反码也表示不了1.0和-1.0。那么按道理,补码应该也表示不了-1.0吧?

其实是可以的,逻辑如下:



网页链接

回答2:

编码机制的问题,有符号数如果对所有位进行编码,可以想象N位所编码的个数首先是是偶数,然后表示的数范围是对称的,也就是说0分为
0和-0,原码和补码正是这样,所以不可能在小数编码机制中出现-1这样一个整数,但是补码的特殊编码机制使0分到了正整数部分,也就是说原来的-0可以编码为另一个数,这个数就是-1

回答3:

原码反码,它们也是想要表示-1 的。
但是,在设计原码反码时,设计者有可能是喝高了。
所以就毫无道理的设计了两个零(+0-0)。而事实上,零,只有一个。
那么,在原码反码中,就缺少了一个-1 的位置。
设计补码时,喝的是茶,就没毛病了。

回答4:

那么,为什么不能表示-1 呢?
你逆向思维一下。