| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1875 人关注过本帖
标题:一个简单的编程证明题,有兴趣可以看看~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:20 回复次数:6 
一个简单的编程证明题,有兴趣可以看看~
在8位的unsigned char中,已知a+b=255,怎么证明a&b=0 ?

这个看上去很简单,但感觉挺好玩的,有兴趣可以证明一下~


[此贴子已经被作者于2018-6-27 10:02编辑过]

搜索更多相关主题的帖子: 编程 兴趣 unsigned char 
2018-06-27 09:57
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:8 
计算结果为全1,说明a和b相同位必然数值相异,因为数值相同相加结果为0,不符合计算结果全1的要求,既然各位相异,则相与的结果必为0,所以a&b=0。

能编个毛线衣吗?
2018-06-27 10:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以下是引用wmf2014在2018-6-27 10:28:53的发言:

计算结果为全1,说明a和b相同位必然数值相异,因为数值相同相加结果为0,不符合计算结果全1的要求,既然各位相异,则相与的结果必为0,所以a&b=0。

这是其中一种简单的证明方法,但说法有点不完善,1+1+进位是可以等于1的,其实稍微说多一个关键点这说法就成立了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-27 11:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:12 
我来个不直观,但完全由公式推导的方法
因为 a+b==255
所以 a == 255-b = -1-b + 256 = -1-b (因为负号就是取反加一,所以) == -1+(~b+1) == ~b
既然 a == ~b
那么 a&b == a&~a == 0
2018-06-27 11:23
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以下是引用rjsp在2018-6-27 11:23:41的发言:

我来个不直观,但完全由公式推导的方法
因为 a+b==255
所以 a == 255-b = -1-b + 256 = -1-b (因为负号就是取反加一,所以) == -1+(~b+1) == ~b
既然 a == ~b
那么 a&b == a&~a == 0

正解

简单说就是看成有符号位就不难得出a == ~b的关系


过了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-27 11:30
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 3楼 九转星河
既然已有大神用公式推算出来,但我还是要说一下:楼主说“1+1+进位是可以等于1的”,很显然总有一个提供进位的那位结果为0的,我说不符合全1的说法没什么问题。

能编个毛线衣吗?
2018-06-27 11:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 6楼 wmf2014
其实这题原型是是操作系统课老师讲的一个关于磁盘调度算法问题

以下是引用wmf2014在2018-6-27 10:28:53的发言:

计算结果为全1,说明a和b相同位必然数值相异,因为数值相同相加结果为0,不符合计算结果全1的要求,既然各位相异,则相与的结果必为0,所以a&b=0。

再补充一下直观的

其实最低位没有进位,但最低位的目标数是1,因此两个位只能是互异的关系~
既然最低位没有进位,那么第二个位也没可能有进位,因此第二个位也只能是互异关系~
这样从前一个位为互异关系推导出后一位为互异关系,用数学归纳法可得

a^b=255

这里可以得出a&b=0

其实4楼已经给出严格的公式证明了,虽然说不直观,但却说得非常清楚了~

[此贴子已经被作者于2018-6-27 11:49编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-27 11:43
快速回复:一个简单的编程证明题,有兴趣可以看看~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027881 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved