zoukankan      html  css  js  c++  java
  • java位运算(操作)的使用

    位操作是程序设计中对位模式按位或二进制数的一元和二元操作。 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)

    缺点:只能为整型和字符型数据

    位运算主要是针对二进制进行的计算操作,其主要有:与  &非  ! | 异或  ^ 左移  >  右移  <

    1.与  &
    使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如:

    1&1=1

    1&0=0

    0&1=0

    0&0=0

    ---

    001

    101

    ---------------

    001(结果)

    结论1:两个数a和b(0<a<b)相与其结果范围是[0,a],包含0和a

    应用场景:hashMap中让hashCode和map数组大小减一进行与操作,得到该key在数组中的位置角标值。

    2.异或  ^

    结论1:两个相同的数进行异或结果是0

    应用场景:storm重arck机制,使用了该操作来判断任务是否完成。

    其他:http://wenwen.m.sogou.com/mq/qudetail.jsp?qid=606323001&w=c%E8%AF%AD%E8%A8%80%E7%9A%84%E8%B4%9F%E5%80%BC%E7%9C%8B%E4%B8%8D%E6%87%82&g_ut=3

    使用场景:基于位运算的权限设计

    http://blog.csdn.net/ajian005/article/details/8490899

    百度百科: http://baike.baidu.com/view/379209.htm

    实例2:java中使用 byte数组要使用 & oxff 才能进行运算(sonar中的一个bug)相关介绍

    http://blog.csdn.net/leonwang_fly/article/details/47422235

    public static void main(String[] args) {
      byte b=-1;
      System.out.println((int)(char)b);
      System.out.println((int)(char)(b & 0xff));
    }

    正如你所看到的: 
    第1个代码片段的运行结果是:-1 
    第2个代码片段的运行结果是:65535和255

    3、左移(右移)符号 

     public static void main(String[] args) {
            //左移 2 * 2 的1次方 = 4
            System.out.println(2<<1);
            //右移 2/2的1次方 = 1
            System.out.println(2>>1);
            //无符号右移 2/2的1次方 = 1
            System.out.println(2>>>1);
            //无符号右移 -2/2的1次方 = 2147483647
            System.out.println(-2>>>1);
        }

    用法javaPriorityQueue队列中的排序算法 (此处等同于除以2,但是比除2更加高效)

     private void siftUpUsingComparator(int k, E x) {
            while (k > 0) {
    //此处等同于除以2,但是比除2更加高效
    int parent = (k - 1) >>> 1; Object e = queue[parent]; if (comparator.compare(x, (E) e) >= 0) break; queue[k] = e; k = parent; } queue[k] = x; }
  • 相关阅读:
    c#读sql server数据添加到MySQL数据库
    ASP.NET取得Request URL的各个部分
    jquery,attr,prop,checkbox标签已有checked=checked但是不显示勾选
    ASP.NET 4.0 :MasterPage母版页的ClientIDMode属性
    百度地图 根据坐标,获取省份,城市,区域
    ECharts
    SQL 更新修改删除一个表,库存自动增减的写法
    ajaxFileupload 多文件上传
    JSON C# Class Generator ---由json字符串生成C#实体类的工具
    mvc 部署到iis 提示错误未能加载文件或程序集System.Web.Http.WebHost
  • 原文地址:https://www.cnblogs.com/zhangshiwen/p/5747797.html
Copyright © 2011-2022 走看看