两个等于 1 的位不重叠的二进制数,|按位或和相加+,结果相等

2022-06-05 22:52:52 +08:00
 jaggle

发现的有点晚了,哈哈哈哈。

1414 次点击
所在节点    分享发现
9 条回复
Xusually
2022-06-05 23:29:21 +08:00
哈哈 这是简单版本
楼主你猜加法器是怎么实现的?
cpstar
2022-06-05 23:37:09 +08:00
等等,我还没有读懂第一句,两个等于 1 的位不重叠的二进制数,后半句明白了,位不重叠的二进制数,两个也知道是什么,但是等于 1 是什么概念?
yigecaiji
2022-06-05 23:57:45 +08:00
@cpstar 比如,10101 和 01010 进行按位或和相加所得的结果一样,所以等于 1 指的应该是位上的值。
jaggle
2022-06-06 00:00:41 +08:00
@cpstar 就是 比如 a=101010 ,第 2 、4 、6 位等于 1 ,b=10101 ,第 1 ,3 ,5 位等于 1 ,因此这两个数 a | b 和 a + b 都等于 111111
misdake
2022-06-06 00:16:29 +08:00
不知道这种情况下,现代 CPU 去跑“或”和“加”之间有没有功耗上的区别哦
cpstar
2022-06-06 00:24:41 +08:00
恕我愚钝,二进制,每个位上的数,除了 0 不就是 1 ?难道还有 2 的情况。。。。
算了不纠结这个

这里边唯一破坏这条结论的不就是 1+1=10≠01=1 OR 1 ,存在了进位,而其他三种情况,+和 OR 结果一致。
但是 1# 所述的加法器,用的一个与门和一个异或门,与门用于计算进位,异或门用于计算本位。
cpstar
2022-06-06 00:26:59 +08:00
@misdake 5# 你要问的是 CPU 处理 OR 指令和 ADD 指令有什么物理结构上的区别。但事实上 ADD 是一个 XOR 和一个 AND 组成的。
debuggerx
2022-06-06 07:27:23 +08:00
结果一致,但是优先级不同,所以一般不会用+替代|
http://www.debuggerx.com/2020/11/11/learn-about-digitwise-operation/
GuuJiang
2022-06-06 07:30:32 +08:00
@cpstar 帮 op 断下句
两个(((等于 1 的位)不重叠)的二进制数)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/857436

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX