gpt4 book ai didi

C - 在两个数字之间交换一点

转载 作者:太空狗 更新时间:2023-10-29 15:23:20 24 4
gpt4 key购买 nike

我刚试过这段代码:

void swapBit(unsigned char* numbA, unsigned char* numbB, short bitPosition)//bitPosition 0-x
{
unsigned char oneShift = 1 << bitPosition;

unsigned char bitA = *numbA & oneShift;
unsigned char bitB = *numbB & oneShift;

if (bitA)
*numbB |= bitA;
else
*numbB &= (~bitA ^ oneShift);

if (bitB)
*numbA |= bitB;
else
*numbA &= (~bitB ^ oneShift);
}

交换 a 和 b 的位位置 x 但由于 if() 我认为有更好的东西。

还有当我看到这个:

*numbB &= (~bitA ^ oneShift);

我真的认为有一种更简单的方法可以做到这一点。如果你有东西给我,我会拿走的:)

提前致谢

最佳答案

首先你应该将数字中的相应位置设置为0,然后将其与实际位进行或运算,删除所有条件:

*numbB &= ~oneShift; // Set the bit to `0`
*numbB |= bitA; // Set to the actual bit value

其他号码也一样。

关于C - 在两个数字之间交换一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45361419/

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