JAVA 运算符

package com.shob.coll;

public class Fu {
	public static void main(String[] args) {
		int a = 128;
		int b = 129;
		/**
		 * & --- 与运算符
		 * 两个操作数中位都为1,结果才为1,否则结果为0
		 * 129 --- 10000001
		 * 128 --- 10000000
		 * -------------------
		 * 		   10000000 --- 128	
		 */
		System.out.println("a 和b 与的结果是:" + (a & b));
		
		/**
		 * | --- 或运算符
		 * 两个位只要有一个为1,那么结果就是1,否则就为0
		 * 129 --- 10000001
		 * 128 --- 10000000
		 * --------------------
		 * 		   10000001 --- 129	
		 */
		System.out.println("a 和b 与的结果是:" + (a | b));
		
		/**
		 * ~ --- 非运算符
		 * 如果位为0,结果是1,如果位为1,结果是0
		 * 129 --- 10000001
		 * ------------------
		 * 		   01111110 --- -130
		 * 
		 * 128 --- 10000000
		 * -------------------
		 * 		   01111111 --- -129
		 */
		System.out.println((~a) + "a ; " + (~b));
		
		/**
		 * ^ --- 异或运算符
		 * 两个操作数的位中,相同则结果为0,不同则结果为1
		 * 129 --- 10000001
		 * 128 --- 10000000
		 * ------------------------
		 * 		   00000001	--- 1
		 */
		System.out.println((a^b));
		
		/**
		 * >>> --- 右移运算符
		 * 将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除上2 的n 次方。
		 * 128 --- 10000000
		 * ---------------------
		 * 			 100000
		 * 		   00100000 --- 32
		 */
		System.out.println(128>>>2);
		
		/**
		 * << --- 左移运算符
		 * 运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方
		 * 128 --- 10000000
		 * ---------------------
		 * 		   1000000000 -- 512
		 * 		  
		 */
		System.out.println(128<<2);
		
		
		/**
		 * >> --- 帶符号右移运算符
		 * 运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1
		 * 128 --- 10000000
		 * ---------------------
		 * 			 100000 --- 32
		 * 		   00100000 
		 * 
		 * -128 --- -01111111
		 * ----------------------
		 *            -011111 --- -32
		 *          -11011111 
		 */
		System.out.println(-128>>2);
	}
	
	
}

  

原文地址:https://www.cnblogs.com/binbang/p/6385592.html