V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jaggle
V2EX  ›  分享发现

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

  •  
  •   jaggle · 2022-06-05 22:52:52 +08:00 · 1411 次点击
    这是一个创建于 888 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    这里边唯一破坏这条结论的不就是 1+1=10≠01=1 OR 1 ,存在了进位,而其他三种情况,+和 OR 结果一致。
    但是 1# 所述的加法器,用的一个与门和一个异或门,与门用于计算进位,异或门用于计算本位。
    cpstar
        7
    cpstar  
       2022-06-06 00:26:59 +08:00
    @misdake 5# 你要问的是 CPU 处理 OR 指令和 ADD 指令有什么物理结构上的区别。但事实上 ADD 是一个 XOR 和一个 AND 组成的。
    debuggerx
        8
    debuggerx  
       2022-06-06 07:27:23 +08:00 via Android
    结果一致,但是优先级不同,所以一般不会用+替代|
    http://www.debuggerx.com/2020/11/11/learn-about-digitwise-operation/
    GuuJiang
        9
    GuuJiang  
       2022-06-06 07:30:32 +08:00 via iPhone
    @cpstar 帮 op 断下句
    两个(((等于 1 的位)不重叠)的二进制数)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1826 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.