zoukankan      html  css  js  c++  java
  • Java学习之位运算符

    位运算符:&,|,^,~,<<,>>
    & (按位与):只有对应的两个二进制位均为1时,结果才为1。例如,9&5,即00001001&00000101=00000001
    |(按位或):只要对应的两个二进制位有一个为1,结果就为1,例如9|5,即00001001|00000101=00001101
    ^(按位异或):两对应的二进制相异时,结果为1
    ~(求反运算):~9=~(1001)=0110=6
    <<(左移运算):把<<左边的运算数个二进制位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补零。例如a<<4,a=00000011,则a=00001100
    位运算符的妙用:
    1.判断奇偶性:
    if(a&1)
    {
    System.out.printIn("a为奇数");
    }
    if(a&1==0)
    {
    System.out.printIn("a为偶数");
    }
    解释:奇数的二进制最低位为1,偶数为0,又因为与0相&,结果都为0,所以如果是奇数,结果为00000001,否则为00000000;
    2.交换变量值
    a=a^b;
    b=a^b;
    a=a^b;
    解释:先令a=a^b,则b=a^b=(a^b)^b=(b^b)^a=0^a,又因为a^0时,a保持不变(0 0时为0,0 1时为1)
    3.求整数平均值
    int x;
    int y;
    int avg=(x&y) +((x^y)>>1);
    解释:
    因为x>>1相当于x/=2,类似的例子还有x<<1相当于x*=2,x>>2相当于x/=4,x<<2相当于x*=4,那么求x,y的整数平均值,使(x+y)>>1不就得了,为什么还要进行(x&y)+((x^y)>>1)这样的操作呢?
  • 相关阅读:
    hibernate课程 初探单表映射2-7 hbm配置文件常用设置
    SQL partition (小组排序)
    修改input的text 通过jquery的html获取值 未变化
    ASP.NET MVC5使用Area区域
    MVC 缓存
    C# 后台访问webapi
    分布式系统
    滴滴出行技术总监:关于技术选型的那些事儿
    Json Self referencing loop detected
    VMWare 安装 Eclipse
  • 原文地址:https://www.cnblogs.com/weiyuan/p/5717431.html
Copyright © 2011-2022 走看看