我只是尝试使用此代码之间的位:Ç - 交换两个数字
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);
}
交换位位置x的A和B,但因为如果()我认为有更好的东西。
而且,当我看到这一点:
*numbB &= (~bitA^oneShift);
我真的觉得有一个更简单的方法来做到这一点。 如果您有什么对我来说,我会采取它:)
在此先感谢
这不是真的“交换数字的两位”,更像是“在两个数字之间交换位”或其他东西,尽管如此,这仍然是一个令人困惑的描述.. – harold
第1步:使用无符号类型,更好地使用'1u << bitPosition'(添加'u') – chux
谢谢,哈罗德,我修改了标题,我不介意.... Chux,我现在将使用它,谢谢:) –