Java 位运算符
简介
将数值进行二进制层面上的比较再转换成十进制
种类
^(and)
转换成二进制,对应两个位置一样变为0,不一样变为1|(or)
转换成二进制,只要有一个是1,就变成1&(xor)
转换成二进制,两个位都是1,才变成1,否则变成0~(not)
转换成二进制,原先是0的变成1,原先是1的变成0>>
转换成二进制,向右移动两位,移除的位省去<<
转换成二进制,向左移动两位即后面填充两个零<<<
转换成二进制,向左移动两位,同时用 0 填充高位,而<<
,用符号填充高位,如果是正数与<<
没有区别,如果是负数,<<
的前两位为-
占位,而<<<
则直接用 0 填充。>>>
没有
实例代码
public class Test {
public static void main(String[] args) {
// 1 0001
// 2 0010
// 3 0011
// 4 0100
// 5 0101
// ^(and) 两个位一样变为0,不一样变为1
// System.out.println(Integer.toBinaryString(5^3));
// System.out.println(Integer.toBinaryString(5^4));
// |(or) 只要有一个是1,就变成1
// System.out.println(Integer.toBinaryString(5|3));
// System.out.println(Integer.toBinaryString(5|4));
// &(xor) 两个位都是1,才变成1,否则变成0
// System.out.println(Integer.toBinaryString(5&3));
// System.out.println(Integer.toBinaryString(5&4));
//
// ~(not) 原先是0的变成1,原先是1的变成0
// System.out.println(Integer.toBinaryString(~3));
// System.out.println(Integer.toBinaryString(~4));
// << 向左移动两位即后面填充两个零
// System.out.println(Integer.toBinaryString(3<<2));
// System.out.println(Integer.toBinaryString(4<<2));
// >> 向右移动两位,移除的位省去
// System.out.println(Integer.toBinaryString(3>>2));
// System.out.println(Integer.toBinaryString(-5>>1));
//
// // <<<
// System.out.println(Integer.toBinaryString(3>>>2));
// System.out.println(Integer.toBinaryString(-5>>>1));
// 11111111111111111111111111111111
System.out.println(-3>>2);
System.out.println(Integer.toBinaryString(-3>>2));
// 00111111111111111111111111111111
System.out.println(-3>>>2);
System.out.println(Integer.toBinaryString(-3>>>2));
}
}
还没有评论,来说两句吧...