if(i&1==1) 表示 如果是 奇数 则。。。
i&1 -- 按位与运算,取 2进制整数 i 的最低位,
如果最低位是1 则得1,
如果最低位是0 则得0。
奇数 i 的最低位 是1,
偶数i 的最低位 是0。
负数二进制表示:
计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码, 补码=反码+1。在 二进制里,是用 0 和1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。
以负数-5为例:
1.先将-5的绝对值转换成二进制,即为0000 0101;
2.然后求该二进制的反码,即为 1111 1010;
3.最后将反码加1,即为:1111 1011
以java为例:
int x1=8;
int x2=-8;
int y1=7;
int y2=-7;
注意:int的宽度为32位,最高位为符号位,机内负数以补码表示,上面的4变量x1,x2,y1,y2的机内码分别是(二进制形式)
x1:0000 0000 0000 0000 0000 0000 0000 1000
x2:1111 1111 1111 1111 1111 1111 1111 1000
y1:0000 0000 0000 0000 0000 0000 0000 0111
y2:1111 1111 1111 1111 1111 1111 1111 1001
x1>>>1得:
0000 0000 0000 0000 0000 0000 0000 0100 十进制为4
x2>>1得:
1111 1111 1111 1111 1111 1111 1111 1100 十进制为-4
y1>>1得:
0000 0000 0000 0000 0000 0000 0000 0011 十进制为3
y2>>>1得:
0111 1111 1111 1111 1111 1111 1111 1100 十进制为2147483644
交换两个变量的值 不要新的变量的方法:
a=a+b;
b=a-b;
a=a-b‘
或者
a=a^b;
b=a^b;
a=a^b;
原文地址:http://www.cnblogs.com/daifei/p/3768374.html