首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二的补码证明

二的补码证明
EN

Stack Overflow用户
提问于 2010-10-20 01:24:31
回答 3查看 3.7K关注 0票数 1

有没有可能通过归纳法证明,对于所有长度为n的序列,任何0的字符串的2的补码都会得到0?

我试图使用值公式来实现这一点,即

值= -a_n-1 x 2^(n-1) +求和{i=0 to n} (a_i x 2^i),其中n=字符串中的位数

EN

回答 3

Stack Overflow用户

发布于 2010-10-20 01:25:55

111..111 的2的补码不就是1 (这意味着111..111代表-1)吗?

票数 1
EN

Stack Overflow用户

发布于 2010-10-20 01:28:08

您是否要求证明,例如,1111 1111的两个补码是0000 0000?如果是这样,你不能证明它,因为它是假的。这两者对1111 1111的补充是0000 0001

代码语言:javascript
复制
    1111 1111
->  0000 0000 <- one's complement
->  0000 0001 <- add 1

对您的编辑的回应:当然可以。但你不需要归纳。反转0_n的所有位以获得1的补码,得到1_n,并添加1将所有位反转回0 (1 + 1 = 10和进位位一直渗透到我们丢弃它的末尾)。QED。

票数 1
EN

Stack Overflow用户

发布于 2010-10-21 04:52:00

1)定义X的两个补码:翻转X和1的位

2)两个变量的1位二进制和(http://www.play-hookey.com/digital/adder.html) (第一个变量为b1,第二个变量为b2 )。b1:X表示变量中的X位)

代码语言:javascript
复制
r1 = b1:1 XOR b2:1
carry = b1:1 AND b2:1

2.1)如果两个比特都是b1:1和b2:1

代码语言:javascript
复制
r1 = 0  (always)
carry = 1 (always)

3)两个变量2位的二进制和

代码语言:javascript
复制
r1 = b1:1 XOR b2:1 
carry1 = b1:1 AND b2:1

r2 = (b1:2 XOR b2:2) XOR carry:1
carry2 = (b1:2 AND b2:2) OR (b1:2 AND carry:1) OR (b2:2 AND carry:1)

3.1)从2.1开始,我们可以减少

代码语言:javascript
复制
carry2 = (b1:2 AND b2:2) OR (b1:2 AND 1) OR (b2:2 AND 1)
carry2 = b1:2 OR b2:2

4)是一个数字零全零。翻转所有位将生成一个全一数字:1

5)位0 XOR XOR=XOR(XOR真值表)

6)对数字零应用(1)

6.1)翻转

代码语言:javascript
复制
 Flipping Zero = Ones

6.2)总和1

代码语言:javascript
复制
 result = Ones + N_One (N_One = 00...001)
 result:1 = 0 (from 2.1)
 carry:1 = 1 (from 2.1)

6.3)因为除了N_One:1之外来自N_One的所有位都是零。

代码语言:javascript
复制
 result:n = (Ones:n XOR N_One:n) XOR carry:(n-1) (from 3)
 result:n = (Ones:n XOR 0) XOR carry:(n-1) (definition of N_One 6.2)
 result:n = Ones:n XOR carry:(n-1)

6.4)从3.1开始

代码语言:javascript
复制
carry:n = Ones:n OR N_One:n -> if carry:n-1 is 1
carry:n = 1 OR 0            -> if carry:n-1 is 1
carry:n = 1                 -> if carry:n-1 is 1

由于6.1中的第一个进位(进位:1)被定义为1,因此所有进位都被定义为1

7)从6.3到6.4

代码语言:javascript
复制
 result:n = Ones:n XOR carry:(n-1)
 result:n = 1 XOR 1
 result:n = 0

对于任何n值,证明(~n+1)始终为0。(固定位域大小的机器的最后一个进位总是被忽略)

QED

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

https://stackoverflow.com/questions/3970978

复制
相关文章

相似问题

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