int型是4字节32位
&,|,~,^,<<,>>,>>>
"&" 按位与,计算时将 十进制 转为 二进制 再进行计算,同位置为1,则结果为1,其余情况皆为0
3: 00000000 00000000 00000000 00000011
6: 00000000 00000000 00000000 00000110
3&6: 00000000 00000000 00000000 00000010
"|" 按位或,计算时将 十进制 转为 二进制 再进行计算,同位置为0的结果为0,其余情况皆为1
3: 00000000 00000000 00000000 00000011
6: 00000000 00000000 00000000 00000110
3|6: 00000000 00000000 00000000 00000111
"~" 按位取反,将二进制下所有为0的数换位1,为1的都换位0
3: 00000000 00000000 00000000 00000011
~3: 11111111 11111111 11111111 11111100
"^" 按位异或,只有0和1的时候为1,0和0为0,1和1也为0
3: 00000000 00000000 00000000 00000011
6: 00000000 00000000 00000000 00000110
3^6: 00000000 00000000 00000000 00000101
"<<" 左移运算,a<<b,将a转为二进制后左移b为,低位补0
3: 00000000 00000000 00000000 00000011
3<<1: 0 00000000 00000000 00000000 00000110
3<<6: 000000 00000000 00000000 00000000 11000000
">>" 右移运算,a>>b,将a转为二进制后向右移b位,高位补0,负数时高位补1
3: 00000000 00000000 00000000 00000011
3>>6 00000000 00000000 00000000 00000000 000011
3>>1 00000000 00000000 00000000 00000001 1
">>>"无符号右移运算,a>>>b,将a转为二进制,向右移b位,低位去掉,高位不管是0还是1都补0
-4: 11111111 11111111 11111111 11111100
-4>>>4: 00001111 11111111 11111111 11111111 1100
二进制下负数的表示:这个数的反码加1
5: 00000000 00000000 00000000 00000101
5的反码: 11111111 11111111 11111111 11111010
-5: 11111111 11111111 11111111 11111011
代码:
//10: 00000000 00000000 00000000 00001010
//10>>1: 00000000 00000000 00000000 00000101
/*int oldCapacity = 6;
int newCapacity = oldCapacity + (oldCapacity >> 1);
System.out.println(newCapacity);*/
System.out.println(3&6);
System.out.println(3|6);
//3: 00000000 00000000 00000000 00000011
//~3: 11111111 11111111 11111111 11111100
//4: 00000000 00000000 00000000 00000100
//4反码: 11111111 11111111 11111111 11111011
//-4: 11111111 11111111 11111111 11111100
System.out.println(~3);
System.out.println(3^6);
System.out.println(3>>6);
System.out.println(3>>1);
System.out.println(-4>>>4);