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); } }