二变量交换的方法:
假设 int a = 3;
int b = 5;
1.正常,无多余的溢出风险
int x = a;
a = b;
b = x;
2.可以不用新定义变量, 但是a + b 过大(过小)可能溢出
a = a + b;
b = a - b;
a = a - b;
3.异或运算……公式简单好记 无溢出风险 装X专用
a = a ^ b;
b = a ^ b;
a = a ^ b;
基础知识:
内存中,正数的补码就是它本身;3 = 00000011
负数的补码就是正数的反码+1; -3 = 11111100 +1 = 11111101
byte 转 char ,在byte为负数时(即符号位为1),char会在前面填充8个1 而不是8个0 造成数据错误
http://blog.youkuaiyun.com/nie_feilong/article/details/5784595
char转int 会在前面填充16个0 妥妥的没问题 主要是byte转char要出问题