问题:“换座位”
交换每两个连续的学生的座位号(id)。如果学生的数量是奇数,则最后一个学生的座位号不交换。学生座位号为从1开始递增的正整数,如:id = 1,2,3,4,5,...
解决方案:分两种情况
1、学生数量是偶数
id:1,2,3,4,5,6
使用异或1
id^1:0,3,2,5,4,7
id+1:2,3,4,5,6,7
(id+1)^1:3,2,5,4,7,6
(id+1)^1-1:2,1,4,3,6,5
2、学生数量是奇数
id:1,2,3,4,5
使用异或1
id^1:0,3,2,5,4
id+1:2,3,4,5,6
(id+1)^1:3,2,5,4,7
(id+1)^1-1:2,1,4,3,6
可以发现,(id+1)^1-1基本可以实现需求,只有在学生数量是奇数时,最后一个数字不符合,需要单独处理。