发现的有点晚了,哈哈哈哈。
![]() | 1 Xusually 2022-06-05 23:29:21 +08:00 via iPhone 哈哈 这是简单版本 楼主你猜加法器是怎么实现的? |
![]() | 2 cpstar 2022-06-05 23:37:09 +08:00 等等,我还没有读懂第一句,两个等于 1 的位不重叠的二进制数,后半句明白了,位不重叠的二进制数,两个也知道是什么,但是等于 1 是什么概念? |
3 yigecaiji 2022-06-05 23:57:45 +08:00 via Android @cpstar 比如,10101 和 01010 进行按位或和相加所得的结果一样,所以等于 1 指的应该是位上的值。 |
4 jaggle OP @cpstar 就是 比如 a=101010 ,第 2 、4 、6 位等于 1 ,b=10101 ,第 1 ,3 ,5 位等于 1 ,因此这两个数 a | b 和 a + b 都等于 111111 |
5 misdake 2022-06-06 00:16:29 +08:00 不知道这种情况下,现代 CPU 去跑“或”和“加”之间有没有功耗上的区别哦 |
![]() | 6 cpstar 2022-06-06 00:24:41 +08:00 恕我愚钝,二进制,每个位上的数,除了 0 不就是 1 ?难道还有 2 的情况。。。。 算了不纠结这个 这里边唯一破坏这条结论的不就是 1+1=10≠01=1 OR 1 ,存在了进位,而其他三种情况,+和 OR 结果一致。 但是 1# 所述的加法器,用的一个与门和一个异或门,与门用于计算进位,异或门用于计算本位。 |
![]() | 7 cpstar 2022-06-06 00:26:59 +08:00 @misdake 5# 你要问的是 CPU 处理 OR 指令和 ADD 指令有什么物理结构上的区别。但事实上 ADD 是一个 XOR 和一个 AND 组成的。 |
![]() | 8 debuggerx 2022-06-06 07:27:23 +08:00 via Android 结果一致,但是优先级不同,所以一般不会用+替代| http://www.debuggerx.com/2020/11/11/learn-about-digitwise-operation/ |