Math 两个';s补码证明

Math 两个';s补码证明,math,proof,twos-complement,Math,Proof,Twos Complement,是否有可能通过归纳证明,对于长度为n的所有序列,0的任何字符串的两个补码都将始终导致0 我试着用价值公式来做这个,也就是 value=-a_n-1 x 2^(n-1)+求和{i=0到n}(a_i x 2^i),其中n=字符串中的位数不是111..111的2的补码,只是1(这意味着111..111代表-1)?你想证明,例如1111111111的两个补码是0000?如果是这样的话,你就不能证明它是假的。1111111的两个补码是0000 0001 1111 1111 -> 0000

是否有可能通过归纳证明,对于长度为n的所有序列,0的任何字符串的两个补码都将始终导致0

我试着用价值公式来做这个,也就是


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

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

你想证明,例如
1111111111
的两个补码是
0000
?如果是这样的话,你就不能证明它是假的。
1111111
的两个补码是
0000 0001

    1111 1111
->  0000 0000 <- one's complement
->  0000 0001 <- add 1
1111111
->0000 00001)X的两个补码的定义:翻转X的位并求和1

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

2.1)如果两位都是b1:1和b2:1

r1 = 0  (always)
carry = 1 (always)
3) 两个2位变量的二进制和

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开始,我们可以减少

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位异或任意值=任意值(异或值的真值表)

6) 在数字0上应用(1)

6.1)翻转

6.2)总和1

6.3)由于N_-One中除N_-One:1以外的所有位均为零

 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开始

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

7) 从6.3和6.4开始

 result:n = Ones:n XOR carry:(n-1)
 result:n = 1 XOR 1
 result:n = 0
对于n的任何值,证明(~n+1)始终为0。(始终忽略具有固定位字段大小的机器的最后进位)


QED属于mathoverflow/math.SE?你可能把一个补语和两个补语混在一起了。宠物脾气:[一个补语]()(一个评论和一个答案,在更多人变得暴躁之前;)肯定不属于MO。如果你知道,这是正确的,可以想象是在M.SE上。但2的补码几乎完全是一个计算概念,所以它在这里似乎不合适。对不起,是指0的字符串。例如,0000=>翻转位并添加1将产生1111+1=0000,其中1进位被丢弃。
 result = Ones + N_One (N_One = 00...001)
 result:1 = 0 (from 2.1)
 carry:1 = 1 (from 2.1)
 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)
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
 result:n = Ones:n XOR carry:(n-1)
 result:n = 1 XOR 1
 result:n = 0