gpt4 book ai didi

c++ - 替换 int 的前位

转载 作者:行者123 更新时间:2023-11-30 05:19:33 24 4
gpt4 key购买 nike

替换给定 int 的前 x 位:

  1. 要替换的位数
  2. 一个新的位序列

例如:将前 4 位替换为 5 位序列 (1100 -> 10111)

1100 0010 1001 -> 1 0111 0010 1001

我知道如何使用 std::bitset 翻转相同长度的位,但如果序列小于或大于第一个序列,我该怎么办?

编辑:为了澄清,我需要将一定数量的最高有效位替换为另一一定数量的位。我不需要算法来检查 int 是否太短而无法替换 4 位,我会处理它。我只需要切断 x 位并连接 y 位,给定一个 int(转换为位)

最佳答案

首先是指从位序列中被认为是最高有效位 (hsb) 的某个位置开始,这意味着必须给出第一个才能知道在哪里操作,并且第一个会发生变化,因为序列将包含更多或更少的位.
或者 first 表示最低有效位 (lsb),在这种情况下,需要左/右移位来更改要替换的序列,使其具有与新序列相同的大小。

00000100100011101001  
^hsb ^lsb (which is actually first?)

顺便说一句:如果你想让你的序列在不指定构建时间的情况下增长,你可能需要查看 boost.dynamic_bitset

关于c++ - 替换 int 的前位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41057511/

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