• Java基础 -3.3


    位运算
    指的是可以直接进行二进制数据的计算处理,主要是:与(&)、或(|)、非(!)、异或(^)、反码(~)、移位处理(>>、<<)

    • 与运算
    public class xxx {
    	public static void main(String[] args) {
    		int x = 7; //00000111
    		int y = 13;//00001101
    		System.out.println(x & y);
    	}
    }
    >>>5//00000101
    

    两位都是1 结果才为1 一个不是1 结果就是0

    • 或运算
    public class xxx {
    	public static void main(String[] args) {
    		int x = 7; //00000111
    		int y = 13;//00001101
    		System.out.println(x | y);
    	}
    }
    >>>15//00001111
    

    两位只要有一个1 就是1 两位都是0 才为0

    • 移位运算
    public class xxx {
    	public static void main(String[] args) {
    		int x = 2; //00000010
    		System.out.println(x<<2);
    		System.out.println(x);
    	}
    }
    >>>8//00001000
    >>>2//00000010 
    

    先左移两位 <<2 变大(乘2 乘两次)
    先右移两位 >>2 变小(除以2 除以两次)

    请问 &与&&、|与||的区别?

    • &和|两个运算符可以进行位运算和逻辑运算;
      • 在进行位运算的时候只是针对当前的数据进行 与和或 处理;
      • 在进行逻辑运算的时候所有的判断条件都要执行;
    • 在逻辑运算上还可以使用&&、||;
      • &&:在若干个条件判断的时候,如果前面的条件返回了false,后续所有的条件都不再判断 最终的结果就是false;
      • ||:在若干个条件判断的时候,如果前面的条件返回了true,后续条件不在执行,最终就是true;
    public class xxx {
    	public static void main(String[] args) {
    		int i =2;
    		if(true&false&(i++>0)) {
    			System.out.println(1);
    		}
    		System.out.println(i);
    		if(false&&(i++>0)) {
    			System.out.println(2);
    		}
    		System.out.println(i);
    	}
    }
    >>>3
    >>>3
    

    两个判断条件都是false 但是从输出的i值来说 可见 &是判断了所有的判断条件 &&只要前面的条件返回了false 后续条件不再判断 自然i还是3而不是4

    Java中的位运算符:
    >>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
    >>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
    
  • 相关阅读:
    Fizz Buzz 问题
    旋转字符串
    合并排序数组
    尾部的零
    A + B 问题
    CentOS6.x安装RabbitMQ
    MySql游标
    MySql存储过程
    找出n个自然数(1,2,3,……,n)中取r个数的组合
    正则表达式
  • 原文地址:https://www.cnblogs.com/sakura579/p/12307329.html
Copyright © 2020-2023  润新知