比如 0000 1010,通常的取反后得到 1111 0101,怎么样忽略高位的 0,只针对低位取反得到 0000 0101
1
goodboy95 2021-03-08 14:19:56 +08:00
异或,想给谁取反就给谁取反,像这种给低 4 位取反就直接跟 15 异或。
|
2
jmc891205 2021-03-08 14:49:05 +08:00
先用二分法找到最高位的 1 在哪里
然后查表找到对应的 mask 异或就好了 |
3
GuuJiang 2021-03-08 14:55:07 +08:00 via iPhone 2
如果你是要固定的低 n 位取反,那参考#1 用异或,如果你是要从首个 1 以后的部分取反,那么……
亲,这边建议您考虑下减 1 呢 |
4
ch2 2021-03-10 20:32:58 +08:00
0000 1010 xor 0000 1111
|