zoukankan      html  css  js  c++  java
  • 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。
    
  • 相关阅读:
    jquery插件开发
    五种常见的 PHP 设计模式
    linux常用命令
    解决MySQL不允许从远程访问的方法
    模块化的JavaScript开发的优势在哪里
    巧用C#做中间语言 实现Java调用.net DLL
    PHP Predefined Interfaces 预定义接口
    想追赶.Net的脚步?Java面前障碍重重
    修改一行SQL代码 性能提升了N倍
    如何使用LoadRunner监控Windows
  • 原文地址:https://www.cnblogs.com/sakura579/p/12307329.html
Copyright © 2011-2022 走看看