java运算符逻辑运算符与位运算符

java中的运算符:

        运算符:算术 + - * / % ++ --

        赋值  =

        扩展  += -= *= /=、关系> < >= <= == != instance、

        逻辑  && || ! ^ 、位 & | ^ ~ >> <<

        条件  ? :

        字符串连接  +

        位运算符: &与 |或 ^异或 ~取反 >>右移 <<左移 ,这里把所有的数转换为二进制数字每一位进行相应的位运算,左移相当于乘2右移相当于除2;

注:逻辑运算符 &与 |或 !非 ^异或 (相同为false不同为true)  
短路&& (只要有一个为false不校验后面的直接返回false)  短路|| (只要有一个为true不校验后面的直接返回true)

重点介绍一下位运算符中的取反运算

/**
 * 测试运算符
 */
public class TestOperator {

    public static void main(String[] args){

        //位运算符
        int m = 3;  //转换为二进制是0000 0011
        int n = 4;  //转换为二进制是0000 0100
        int y = -5; //转换为二进制是1000 0101
        System.out.println(m&n);// 输出是0 二进制与是0000
        System.out.println(m|n);//输出是7 二进制或是0111
        System.out.println(m^n);//输出是7 二进制异或是0111
        /**
         * 补码: 正数最高位是0 负数最高位是1
         * 42的补码是00101010
         * -42的补码是11010110  计算方法00101010按位取反11010101+1
         *
         * 正数的补码不变
         * 负数的补码是先取反后+1
         *
         *正数取反是先取反码,然后对得到的反码(是负数按照负数取补码的流程)取补码从而得到需要的原码
         *负数取反是先取补码,然后再取反得到反码,然后对反码再取补码得到原码
         */

        /**
         * 二进制是0000 0011取反得到补码1111 1100  对得到的补码取补码(先取反再+1)0000 0011+1 得到原码 0000 0100  又因为是负数所以所以最高位是1 1000 0011
         */
        System.out.println(~m); //输出是-4
        /**
         * 二进制是 1000 0101 取补码1111 1010+1=1111 1011 取反码 0000 0100 再取补码 0000 0100(正数原码、反码、补码相同)
         */
        System.out.println(~y);//输出是4

        //移位运算符
        int g = 3<<2; //0011左移两位 1100
        System.out.println(g);//输出是12  左移1位相当于乘2
        System.out.println(g>>2);//输出是3 右移1位想当于除2

        //逻辑运算符 !>&&>||


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值