java中位运算

1、 2n - 1  等价的位移运算?

       2n - 1 = -1 ^ (-1 << n) ,Java中即:Math.pow(2, n) - 1 = -1 ^ (-1 << n);

  应用范例,twitter提出的获取分布式id的SnowFlake算法中多处使用。    

2、x % 2n 等价的位运算?

       x % 2 = x & (2n - 1) ,Java中即:x % Math.pow(2,5) == (x & (long)(Math.pow(2,5) -1));

  应用范例,HashMap中采用此操作定位Key的对应的数组下标。

3、如何求负数二进制表示?

      负数采用补码表示。补码 = 反码 + 1;

    3的反码为(1100),则-3的二进制表示如下,

      -3  =  (1100) + (0001) = (1101) ;

 

posted on 2019-08-01 17:33  mylittlecabin  阅读(199)  评论(0编辑  收藏  举报

导航