请问为什么-5000到4999的区间,过剩数是5000和150?也有可能不是过剩数,我是在外文教材上看到的是这个 Excess N
"过剩数 (Excess-N)"是一种用于表示正负整数的计算机编码方式。这里的 N 是一个特定值,实际上它定义了所能表示数字范围的中心点。
取 Excess-5000 为例,你想表达 -5000 到 4999 的区间时就可以采用。在这个集合中, -5000 就映射到了二进制 000…000 (即所有位都是零), 而4975(即-25)则映射到5000,因此其二进制形式会是所有位1(以下前提是你使用足够长长度来存储数据而不丢失精度)。
Excess-N 方法带有如下特性:
a. 正负零只有一个编码 表示成‘N’
b. 给定一个十进制数X(X为正或负),先确定与之对应底层非负整数Y(X+|MinValue|),然后Y转为二进制串再进行分析。
同理如果要把 Excess-150
应用于包含 -5000 到 4999
区间内数字的情况,则每个原始数字都需要增加150才能得出正确地结果。
通常选取什么样的 N 常依据需求和具体问题环境去选择保证效果等方面考虑;并且具体处理、解析方法也直接关联一些硬件设计细节和底层实现环境。