首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自补全代码

自补全代码
EN

Stack Overflow用户
提问于 2012-03-24 16:02:17
回答 3查看 5.5K关注 0票数 0

https://electronics.stackexchange.com/questions/20537/how-to-identify-self-complementing-code

我读得很好,

但是,有必要从9中减去这个数字吗?

因为在8421系统12= 1100中

如果减去15-12,那么答案是3,也就是0011。

所以它也是自我补充的.

我不明白,给定的数字需要从哪个数字中减去,那个数字一定是9吗?

EN

回答 3

Stack Overflow用户

发布于 2016-01-29 23:21:59

如果权重之和是9,则它是自补的,例如5211=(5+2+1+1)=9或2421=(2+4+2+1)=9 8421不是自补的,因此,8421!=9。

票数 1
EN

Stack Overflow用户

发布于 2012-03-24 17:11:31

用于基数10的自补码是这样一种码,对于该码,给定的编码数字d 0-9的补码将产生9-d,即9的补码。

要用二进制编码10进制数字,我们需要能够表示10个值0-9,这意味着我们需要4位,因为3位可以表示8个值,这是不够的;4位可以表示16个值,这比我们需要的要多,但我们没有(或想要)小数位。

在这4位内有许多可能的编码方案,其中最直观的是8-4-2-1方案,或直接对十进制值进行二进制编码。要使用8-4-2-1编码12,您需要将1和2分别编码为它们各自的二进制表示0001和0010。

9的补码与二进制编码十进制/基数10数字的上下文相关,因为9是编码基数10数字时所需的最大值。

您的示例意味着Base-16,显示为十进制,您正确地生成了15的补码,而不是9的补码。8-4-2-1直观地说是Base-16的自补码,因为取4位二进制数的补码等同于从15中减去它。

对于以相同方式表示的10进制数字就不能这样说了,因为我们在16个成员代码空间中只表示10个值,这就是为什么已经设计了许多更复杂的系统来生成自补码,用于表示4位二进制数中的十进制数。

表13.1这里:[ http://www.inf.fu-berlin.de/lehre/WS00/19504-V/Chapter1.pdf ]显示了两种用于十进制编码的自补码,即8,4,-2,-1和excess 3编码方案,后续部分描述了自补码背后的目的和理论。

票数 0
EN

Stack Overflow用户

发布于 2012-03-24 21:50:06

为了澄清,需要重新表述: IIRC它意味着当可见数字从9中减去时,编码的“数字”是位反转的,即从15中减去。

可以编码例如0= 0011,1= 0100,2= 0101,...,9= 1100 (所谓的超出-3,详情请参阅modi的回复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9850097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档