在java中,如果一个负数出现在按位运算符之后呢

在java中,如果一个负数出现在按位运算符之后呢,java,bit-manipulation,operator-keyword,Java,Bit Manipulation,Operator Keyword,当我阅读代码片段时,我感到困惑 long lastWordMask = WORD_MASK >>> -toIndex; 但是toIndex是正数,我想知道如果运算符(>>)后面出现负数会发生什么 如果toIndex是正数,并且在它前面有一个负号(-),您必须想象toIndex的正数二进制对应物被转换为它的负数二进制对应物。然后进行右移。尝试手动计算结果 在长时间的唠叨之后,只需尝试这行代码,并与手动计算的结果进行比较 如果不是,那么你必须学会计算。:) 试试看,你会得到你的

当我阅读代码片段时,我感到困惑

long lastWordMask  = WORD_MASK >>> -toIndex;
但是toIndex是正数,我想知道如果运算符(>>)后面出现负数会发生什么


如果toIndex是正数,并且在它前面有一个负号(-),您必须想象toIndex的正数二进制对应物被转换为它的负数二进制对应物。然后进行右移。尝试手动计算结果

在长时间的唠叨之后,只需尝试这行代码,并与手动计算的结果进行比较


如果不是,那么你必须学会计算。:)

试试看,你会得到你的答案。假设
toIndex
在[0..63]之内,这意味着
WORD\u MASK>>(63-toIndex)
。是的,我试过了,得到了答案,哈罗德说的是对的,谢谢