一个小小的发现
今天突然有一个小小的想法:貌似对一个二进制数来说,先对其进行求反运算再加一等于先对其减一再求反
即:
令x为一二进制数,有
~x + 1 == ~( x - 1 )
试着证了一下,原来还真是这样的,不知这是不是一个定理?官方名字叫什么呢?
不知自己的证明有没有缺点,特发此贴,希望各位畅所欲言,谢谢!
^_^
偶用数学归纳法证的,证明如下:
假设有一二进制数a,其位数为k
当k = 1时,a只可能是0或1,由:
~0 + 1 = ~( 0 - 1 ) = 0
~1 + 1 = ~( 1 - 1 ) = 1
得:k为1时,原命题成立
假设k = i时,(i > 1),原名题成立,则:
i位二进制数a满足:~a + 1 = ~( a - 1 )
当k = i + 1时,分两种情况:
(1)a的最后一位为0,即a为:XXXX....XXX0 (X为0或1)
假如用一个符号b代替a的前i位,则a表示为:b0
先对b0取反再加一,令c = ~b + 1,则运算后所得为:c0
再对b0减一取反,令d = ~( b - 1 ),则运算后所得为:d0
因为b为i位,故由上得:c = d
此情况得证
(2)同理:
a的最后一位为1,即a为:XXXX....XXX1 (X为0或1)
假如用一个符号b代替a的前i位,则a表示为:b1
先对b1取反再加一,令c = ~b ,则运算后所得为:c1
再对b1减一取反,则运算后所得为:c1
此情况得证
综上所述:原命题成立