java - Java中的<<或>>>是什么意思?

标签 java syntax

<分区>

Possible Duplicate:
What does >> and >>> mean in Java?

我在一些 Java 代码中遇到了一些不熟悉的符号,虽然代码可以正确编译和运行,但我对尖括号在这段代码中的确切作用感到困惑。我在 com.sun.java.help.search.BitBuffer 中找到了代码,其中的一个片段如下:

public void append(int source, int kBits)
    {
        if (kBits < _avail)
        {
            _word = (_word << kBits) | source;
            _avail -= kBits;
        }
        else if (kBits > _avail)
        {
            int leftover = kBits - _avail;
            store((_word << _avail) | (source >>> leftover));
            _word = source;
            _avail = NBits - leftover;
        }
        else
        {
            store((_word << kBits) | source);
            _word = 0;
            _avail = NBits;
        }
    }

那些看起来很神秘的括号有什么作用?它几乎看起来像 C++ 插入/提取,但我知道 Java 没有类似的东西。

此外,我尝试用谷歌搜索它,但出于某种原因谷歌似乎看不到尖括号,即使我将它们放在引号中也是如此。

最佳答案

它们是按位移位运算符,它们通过移位指定的位数来进行操作。这是 tutorial关于如何使用它们。

The signed left shift operator "<<" shifts a bit pattern to the left

The signed right shift operator ">>" shifts a bit pattern to the right.

The unsigned right shift operator ">>>" shifts a zero into the leftmost position

关于java - Java中的<<或>>>是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387365/

相关文章:

JAVA GC 主要 GC 与次要 GC

java - 在maven项目中嵌入本地jar文件

java - 如何在 JFrame 中的其他内容下面添加鼠标监听器?

java - Pipe ("|")和 grep 在 Android 中的 ProcessBuilder 中不起作用

java - 如何在 Java 中优雅地处理 null

list - 获取对 commonLISP 中函数的 undefined reference

c++ - C++ 中方法签名在结束括号和开始大括号之间的部分是什么?

ruby - JRuby 是否支持 { 事物 : "hello" } syntax?

代码末尾的 MySQLTrigger 语法错误

scala - 在 Scala 中有一个 'empty' 的 case 语句是什么意思?