gpt4 book ai didi

位运算问题

转载 作者:行者123 更新时间:2023-12-02 13:40:41 26 4
gpt4 key购买 nike

有没有一种方法可以仅使用位运算来找到被设置次数最少的位?

例如,如果我有三位数组:

11011001

11100000
11101101

仅在三个向量中的 1 个向量中,位置 3 和 5 中的位被设置为 1。

我目前有一个 o(n) 解决方案,其中 n 是位数组中的位数,我遍历位数组中的每个位并在每次出现 1 时递增,但是对于出于某种原因,我认为有一个 o(1) 解决方案,我可以使用它进行少量的按位运算。有人可以建议吗?谢谢。

最佳答案

如果值的总数有限,您可以使用重复/移位/掩码方法来分隔位,并且可能比迭代移位方案更快一点。

例如,对于每个“位”8 位值,假设不超过 15 个值:

bits1 = (bits >> 3) & 0x11;
bits2 = (bits >> 2) & 0x11;
bits3 = (bits >> 1) & 0x11;
bits4 = bits & 0x11;
bitsSum1 += bits1;
bitsSum2 += bits2;
bitsSum3 += bits3;
bitsSum4 += bits4;

然后,最后将每个 bitsSumN 值分成两个 4 位计数。

关于位运算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com