自我完成的代码

时间:2012-03-24 08:02:17

标签: digital digital-logic

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

我已经正确地阅读了,

但是,是否有必要从9中减去数字?

因为在8421系统中  12 = 1100

如果我们减去15-12,那么答案是3,即0011。

所以它也是自我补充......

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

3 个答案:

答案 0 :(得分:1)

如果权重之和为9则为自补 例如5211 =(5 + 2 + 1 + 1)= 9或2421 =(2 + 4 + 2 + 1)= 9 8421不是自我补充所以,8421!= 9。

答案 1 :(得分:0)

Base-10的自补码是给定编码数字 d [0-9]的补码将导致 9-d 的代码, 9的补充。

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

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

9的补码与二进制编码十进制/ Base-10数相关,因为9是编码Base-10数时所需的最大值。

你的例子暗示Base-16,显示为十进制,你正确地生成15的补码而不是9的补码。 8-4-2-1直观地是Base-16的自补码,因为取4位二进制数的补码与从15减去它是相同的。

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

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

答案 2 :(得分:0)

澄清一些改述: IIRC意味着当从9中减去可见号时,编码的“数字”被反转,即从15减去。

可以代码,例如0 = 0011,1 = 0100,2 = 0101,...,9 = 1100(所谓的过量-3,详见modi的回复。