java逻辑操作符代码示例
来源:互联网 发布:淘宝信息层面判断售假 编辑:程序博客网 时间:2024/05/21 09:33
public class BitOpt { public static void main(String[] args) { //int 类型变量共使用4个字节即32位二进制位存储 //其中最高位第32位为符号位,表示此整数是否有负号,0代表没有即正数1代表有负号即负数 int m = 61; //111101为其二进制表示形式 //正整数的存储形式:除第32位符号位为0外,其余31位是直接把此数的二进制表示形式通过补0补齐到31位得到的如下 // 0000000 00000000 00000000 00111101 //结合符号位0最终得到61在内存中的存储形式 //00000000 00000000 00000000 00111101 int n = -61; //负整数的存储形式:除第32位符号位为1外,其余31位的处理稍复杂一些,如下 //1. 先得到此负数的绝对值61的二进制表示形式通过补0补齐到31位得到 // 0000000 00000000 00000000 00111101 //2. 在上面的基础上按位取反,即0变1,1变0,得到 // 1111111 11111111 11111111 11000010 //3. 在步骤2的基础上按二进制计算规则(逢二进一)加上1得到 // 1111111 11111111 11111111 11000011 //结合符号位1最终得到-61在内存中的存储形式 //11111111 11111111 11111111 11000011 }}public class BitOpt { public static void main(String[] args) { //位运算符共7个:& | ^ ~ << >> >>> //计算规则,把二进制位1当作true,0当作false看待,按相应逻辑运算规则计算对应二进制位 //^ 按位异或规则为相同为0不同为1,即1-1和0-0得到0,1-0和0-1得到1 int r = 0; int a = 61; //00000000 00000000 00000000 00111101 int b = -4; //11111111 11111111 11111111 11111100 r = a & b; //00000000 00000000 00000000 00111101 : 61 a //11111111 11111111 11111111 11111100 : -4 b //--------------------------------------------- & //00000000 00000000 00000000 00111100 : 60 r r = a | b; //00000000 00000000 00000000 00111101 : 61 a //11111111 11111111 11111111 11111100 : -4 b //--------------------------------------------- | //11111111 11111111 11111111 11111101 : -3 r r = a ^ b; //00000000 00000000 00000000 00111101 : 61 a //11111111 11111111 11111111 11111100 : -4 b //--------------------------------------------- ^ //11111111 11111111 11111111 11000001 : -63 r r = ~a; //00000000 00000000 00000000 00111101 : 61 a //--------------------------------------------- ~ //11111111 11111111 11111111 11000010 : -62 r }}