专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java运算符(java运算符号解释大全)

temp10 2024-10-18 13:47:05 java教程 11 ℃ 0 评论

|=:两个二进制对应位都为0时,结果等于0,否则结果等于1;

&=:两个二进制的对应位都为1时,结果为1,否则结果等于0;

Java运算符(java运算符号解释大全)

^=:两个二进制的对应位相同,结果为0,否则结果为1。


输入一个整数,打印其对应的二进制

  System.out.println(
            Integer.toBinaryString(num)
        );

n的二进制 start
100
n的二进制 end

为什么要写这篇内容呢,因为再看hashMap数据结构的时候,有这么一段代码,巧妙的取到一个数字,离它最近的2的几次幂的数字。结果就研究了一下。


插一句说明: 关于 |= 运算符:|= 运算符和 += 这一类的运算符一样,拆解开就是 a = a | b;

 static final int tableSizeFor(int cap) {
        int n = cap - 1;

        System.out.println("n的二进制 start");
        printInfo(n);
        System.out.println("n的二进制 end");


        System.out.println(n>>>1);
        n |= n >>> 1;
        System.out.println(n);

        System.out.println("-----------------------");

        System.out.println(n>>>2);
        n |= n >>> 2;
        System.out.println(n);
        System.out.println("-----------------------");
        System.out.println(n>>>4);
        n |= n >>> 4;
        System.out.println(n);
        System.out.println("-----------------------");
        System.out.println(n>>>4);
        n |= n >>> 8;
        System.out.println(n);
        System.out.println("-----------------------");
        System.out.println(n>>>16);
        n |= n >>> 16;
        System.out.println(n);
        System.out.println("-----------------------");

        return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }


打印结果

n的二进制 start
100
n的二进制 end
2
6
-----------------------
1
7
-----------------------
0
7
-----------------------
0
7
-----------------------
0
7
-----------------------
8
 

跟着debug走一下,恰巧能取到与这个数字最近的2的几次幂的数字。 虽然没看懂他这个逻辑算法,为什么这样,就能取到了,有大神们可以在评论区给分享下。


然后又研究了Java中的位运算,大家后续在计算数值的时候,也可以比较巧妙的使用这个。

<< : 左移运算符,num << 1,相当于num乘以2

>> : 右移运算符,num >> 1,相当于num除以2

>>> : 无符号右移,忽略符号位,空位都以0补齐


直接上例子

        printInfo(3);
        System.out.println(3<<2);
        System.out.println(3>>1);
        System.out.println(3 >>> 1);

打印结果

二进制: 11
十进制: 12
十进制: 1
十进制: 1

我们给算一下, 3的二进制是11, 往左移动2位子, 则二进制是1100 ,此二进制的十进制是2^3+2^2=8+4=12, 正好是十进制12.

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表