使用按位运算符

时间:2016-01-20 00:19:18

标签: logic bitwise-operators swap

如何使用按位运算符交换两个整数的值,以便不应声明其他临时变量?

1 个答案:

答案 0 :(得分:0)

我在这里使用16位整数。如果两个整数都不大于0x00FF或仅使用其LSB,那么你可以这样做:

a = 0x002E;
b = 0x007A;
//first transfer b into a's upper byte
a |= b << 8;
//transfer a's lower byte into b
b = a & 0x00FF //b is now equal to a's original value
//finally right shift a's upper byte
a >>= 8 //a is now equal to b's original value

我不认为你可以交换两个16位整数的值,大于0x00FF,而不使用第三个变量,因为当你移位时,你会失去它们,除非你把它们保存到某个地方。您必须将其中一个整数强制转换为 long ,这将使您可以使用32位,然后执行与上述操作几乎相同的操作。