V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jedrek
V2EX  ›  问与答

低位取反

  •  
  •   jedrek · 2021-03-08 13:06:16 +08:00 · 739 次点击
    这是一个创建于 1385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 0000 1010,通常的取反后得到 1111 0101,怎么样忽略高位的 0,只针对低位取反得到 0000 0101

    4 条回复    2021-03-10 20:32:58 +08:00
    goodboy95
        1
    goodboy95  
       2021-03-08 14:19:56 +08:00
    异或,想给谁取反就给谁取反,像这种给低 4 位取反就直接跟 15 异或。
    jmc891205
        2
    jmc891205  
       2021-03-08 14:49:05 +08:00
    先用二分法找到最高位的 1 在哪里
    然后查表找到对应的 mask 异或就好了
    GuuJiang
        3
    GuuJiang  
       2021-03-08 14:55:07 +08:00 via iPhone   ❤️ 2
    如果你是要固定的低 n 位取反,那参考#1 用异或,如果你是要从首个 1 以后的部分取反,那么……
    亲,这边建议您考虑下减 1 呢
    ch2
        4
    ch2  
       2021-03-10 20:32:58 +08:00
    0000 1010 xor 0000 1111
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2622 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:14 · PVG 18:14 · LAX 02:14 · JFK 05:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.