gpt4 book ai didi

c++ - 移位 - 用新数字替换位集的一部分

转载 作者:搜寻专家 更新时间:2023-10-31 01:57:33 29 4
gpt4 key购买 nike

我有一个编码为 boost 动态位集的数字列表。我根据此列表中的任何数字可以采用的最大值动态选择此位集的大小。所以假设我有从 0 到 7 的数字,我只需要三位,我的字符串 0,2,7 将被编码为000010111

我现在需要将此列表中的第二个数字 (2) 更改为另一个数字,例如 4。我认为最有效的方法是将 4 表示为与列表长度相同但所有其他值设置为 1 的动态位集,因此 111111011。然后,我将使用 1s 对所需的数量进行位移位,以填充值以获得 111011111,然后将其与原始位集按位 AND 以获得我想要的结果。

但是,我无法找到一种方法来完成这两件事,因为看起来既有从整数初始化位集,也有移位时,默认值和填充值总是设置为 0,而不是 1。如何我可以解决这个问题,或者以不同的有效方式实现我的目标吗?

谢谢

最佳答案

如果这真的是实现,我能想到的最通用和最有效的方法是首先屏蔽掉您要替换的部分的所有位:

value &= 111000111;

然后在该位置的实际位中使用“或”:

value |= 000011000;

希望这里有人有更好的技巧供我学习,但这就是我所做的。

关于c++ - 移位 - 用新数字替换位集的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474009/

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