gpt4 book ai didi

c - 就地按位 AND 然后恢复原始值

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:01 25 4
gpt4 key购买 nike

我有一个严格的内存限制,不允许分配堆内存,也不允许使用堆栈上的局部变量进行后续位操作。

我有两个整数值 AB(假设它们只是两个字节值)。我想知道 A & B 的结果是什么(例如通过 A &= B)然后恢复 A 的原始值进入 A

由于不允许有额外的内存,我不能暂时存储A的原始值。我可以简单地使用一系列位操作来恢复A的值吗?

这样做的原因是我有一大堆数据,我需要在按位之后计算这些位 - 以及一些东西。但我需要保留原始值以根据其他值测试它们。实际数据位于堆分配非常昂贵的设备上。而且数据的长度是动态的,所以我不能声明一个局部变量来保存它的临时值。

这可能吗?如果可以,我应该怎么做?

最佳答案

您的印象似乎是需要复制整个数组,修改副本,然后对其执行操作。没必要。

对于数组的每个元素,计算A & B 并将其存储在本地。然后计算设置的位数,并将其添加到运行总数中。

例如:

int count_bits_with_and(unsigned char *array, int size, unsigned char val)
{
int i, sum;

for (i=0, sum=0; i<size; i++) {
unsigned char v = array[i] & val;
int count = count_bits(v);
sum += count;
}
return sum;
}

关于c - 就地按位 AND 然后恢复原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54577482/

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