低位取反

2021-03-08 13:06:16 +08:00
 jedrek

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

678 次点击
所在节点    问与答
4 条回复
goodboy95
2021-03-08 14:19:56 +08:00
异或,想给谁取反就给谁取反,像这种给低 4 位取反就直接跟 15 异或。
jmc891205
2021-03-08 14:49:05 +08:00
先用二分法找到最高位的 1 在哪里
然后查表找到对应的 mask 异或就好了
GuuJiang
2021-03-08 14:55:07 +08:00
如果你是要固定的低 n 位取反,那参考#1 用异或,如果你是要从首个 1 以后的部分取反,那么……
亲,这边建议您考虑下减 1 呢
ch2
2021-03-10 20:32:58 +08:00
0000 1010 xor 0000 1111

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

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

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

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

© 2021 V2EX