当前位置: 首页 > 面试题库 >

Java中的“ >>>”是什么意思?

那绪
2023-03-14
问题内容

我发现此代码可在此处找到SO中的重复项。但我不明白这条线是什么意思int mid = (low + high) >>> 1;

private static int findDuplicate(int[] array) {
        int low = 0;
        int high = array.length - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            System.out.println(mid);
            int midVal = array[mid];

            if (midVal == mid)
                low = mid + 1;
            else
                high = mid - 1;
        }
        return high;
    }

问题答案:

>>>运算符是Java中无符号的右移位运算符。它有效地将操作数除以2右操作数的幂,或者仅2在此处。

>>和之间的差异>>>仅在移动负数时才会显示。如果>>运算符1是a
1,则运算符会将其移位到最高有效位,而无论如何都将>>>移位0

更新:

让我们求平均值12147483647Integer.MAX_VALUE)。我们可以轻松地进行数学运算:

(1 + 2147483647) / 2 = 2147483648 / 2 = 1073741824

现在,通过代码(low + high) / 2,涉及到以下这些位:

          1: 00000000 00000000 00000000 00000001
+2147483647: 01111111 11111111 11111111 11111111
================================================
-2147483648: 10000000 00000000 00000000 00000000  // Overflow
/2
================================================
-1073741824: 11000000 00000000 00000000 00000000  // Signed divide, same as >> 1.

让我们将“转移”到>>>

          1: 00000000 00000000 00000000 00000001
+2147483647: 01111111 11111111 11111111 11111111
================================================
-2147483648: 10000000 00000000 00000000 00000000  // Overflow
>>> 1
================================================
+1073741824: 01000000 00000000 00000000 00000000  // Unsigned shift right.


 类似资料:
  • 问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如

  • 问题内容: 重入意味着锁定是在每个线程而不是每个调用的基础上获得的。 由于内在锁由线程持有,这是否意味着线程运行一次等于调用基础? 谢谢,这似乎意味着:在线程中,如果我在调用function的流程函数时获得了锁,并且还需要一个锁,那么将会有一个可重入的过程。在Java中,这种现象是按线程获取的,因此我不需要考虑死锁吗? 问题答案: 重入意味着锁定是在每个线程而不是每个调用的基础上获得的。 这是一个

  • 在这组Java代码中,处的是什么意思?我试着搜索,但我没有找到任何解释。请知道的人给我解释一下。太感谢你了。

  • 我发现这段代码是为了在SO post中找到重复的代码。但我不明白这行是什么意思

  • 问题内容: 作为Java的初学者,我仍然不确定它的含义。有人精通Java 问题答案: 静态表示标记为此类的变量或方法在类级别可用。换句话说,你无需创建类的实例即可访问它。 因此,与其创建一个Foo实例,然后doStuff像这样调用: 你只需直接针对该类调用该方法,如下所示:

  • 可能重复: 什么 我在一些java代码中遇到了一些不熟悉的符号,虽然代码编译和功能正确,但我对尖括号在代码中的确切作用感到困惑。我在com中找到了代码。太阳Java语言帮助搜索位缓冲区,其片段如下: 那些看起来神秘的括号是做什么的?它看起来几乎像c插入/提取,但我知道Java没有这样的东西。 此外,我还尝试在谷歌上搜索,但出于某种原因,谷歌似乎看不到尖括号,即使我把它们放在引号中。