gpt4 book ai didi

c++ - 给定两个二进制数,将一个子集从一个复制到另一个

转载 作者:太空狗 更新时间:2023-10-29 20:13:53 25 4
gpt4 key购买 nike

假设我有两个二进制数 0011001011101110 ,我想将最后 4 个值从第二个复制到第一个以形成二进制数 00111110 .是否有干净的方法可以使用对两个字节(或更大的数据类型)的按位运算来执行此操作。假设二进制压缩数据类型。

此外,对于这个问题是否有通用的解决方案,可以复制任何 子集。假设我想将一些中间 3 位从一个数字复制到另一个数字,实现此目的的最佳方法是什么?

最佳答案

如果您有输入 xy 并且想要将一组特定的位从 x 复制到 y,比方说,在某个变量 m 中为 1 的位(您要复制的位的 掩码),这可以是完成如下:

int copy(int x, int y, int m) {
return ((x & m) | (y & (~m)));
}

这也适用于大于或小于 int 的事物,例如 charshortlong

采用 (x & m) 将仅给出 xm 具有 1 的位在那个位置,并且(y & (~m)) 将仅给出 ym 没有 1 在那个位置。

然后将它们与 | 进行或运算,得到 m1 位置的位来自 x,并且其在m0的位置的位来自y

您的特定情况将有 x = 0xeey = 0x32m = 0xF

关于c++ - 给定两个二进制数,将一个子集从一个复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19099838/

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