我只是嘗試使用此代碼之間的位:Ç - 交換兩個數字
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,我現在將使用它,謝謝:) –