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; }
  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/zhangshiwen/p/5747797.html
Copyright © 2011-2022 走看看