gpt4 book ai didi

C : How do I change bits in specific positions to specific values?

转载 作者:行者123 更新时间:2023-11-30 19:03:45 29 4
gpt4 key购买 nike

我尝试找到这个问题,但所有其他问题都与我的问题无关。

我的问题:我有类似 0xFreeFoodU 的东西,我必须获得特定的位置,然后翻转它们或将它们设为 1 或 0。

例如,位置 2、6、10、14、18、22、26 和 30 中的位应保持不变,而位置 3、7、11、15、19、23、27 和 中的位应保持不变。 31 应该更改为 1。我不想发布我的整个提示,因为我不想欺骗并让其他人为我做我的硬件。但至少给我其中一个答案将帮助数百万人。

这是位操作。但我不知道如何操作特定位置的特定位。 :(

编辑我无法上传完整的程序;它太长了。但我有一个主函数,我可以在其中调用我需要的函数。理想情况下,该函数应该有 return 等;到目前为止我已经

返回val_num ^ 0x22222222U;但我应该补充一下。我只需要有关如何将某些位设置为 1 和 0 的帮助。是否需要屏蔽?

最佳答案

如果您设法执行 XOR 部分,则将位设置为 1 的部分几乎相同:

创建包含所有位的掩码:

unsigned int mask_0       = 0x....;      // bits that shall be set to 0

unsigned int mask_1 = 0x88888888; // bits that shall be set to 1
// Note: this is 1<<3 | 1<<7 | 1<<11 ... All bits set that shall be changed

unsigned int mask_toggle = 0x22222222; // bits that shall be toggled
unsigned int value = 0xdeadbeef;

执行所需操作:

// toggle bits
value = value ^ mask_toggle;

// set bits to 1
value = value | mask_1;

// set bits to 0
value = value & ~mask_0;

关于C : How do I change bits in specific positions to specific values?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53478679/

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