https://electronics.stackexchange.com/questions/20537/how-to-identify-self-complementing-code
我已经正确地阅读了,
但是,是否有必要从9中减去数字?
因为在8421系统中 12 = 1100
如果我们减去15-12,那么答案是3,即0011。
所以它也是自我补充......
我不明白,给定的数字需要从哪个数字中减去,那个数字是否必须是9 ???
答案 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的回复。