^ 按位异或 对应的二进制位异或 相同为0 相异为1 只能是整数
假如a=3 b=5 不使用第三个变量使其交换
可以用
a=a+b b=a-b a=a-b
但是会有溢出问题 int作为整数型有最大范围
所以应用异或来解决更好
a=a^b
b=a^b
a=a^b
就可以得到 a=5 b=3
两个相同数字异或是0 ,0和任何一个数异或还是数本身
查一个数内存二进制上有几个1
a为要查的数字
for (i = 0; i <= 32; i++)
{
if (a & 1 == 1)
{
com++
a>>1
}
else
{
a>>1
}
}