java - 为什么在java中位移位对-1不起作用?

标签 java bit-manipulation

我尝试做-1 >> 1在java中,但打印的结果仍然是-1一开始,我认为这是因为算术右移的符号扩展性质。但通过额外的测试,我发现-1 >> [0, 64]-1 。为什么会发生这种情况?

最佳答案

这是因为符号扩展。 -1用仅包含1的比特序列表示。因此,使用带符号扩展的右移始终会产生所有位均为 1 的序列,即 -1,无论位移的第二个操作数如何。

关于java - 为什么在java中位移位对-1不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650043/

相关文章:

java - 遇到无法在 pyspark 上运行程序的错误

java - 为什么 IntelliJ 在简单的 java 程序中显示错误?

c++ - 转置 4x4 字节矩阵的最快方法

c - ANSI C 的位操作库

Java - 格式化字符串输出以显示在 TextArea 中

java - 如何更好地设计这段代码的类结构

java - 如何从用户那里获取 150k 关注者ID?

python - 如何将整数转换为可变长度字节字符串?

python-2.7 - Python2 在位操作方面遇到问题

c++ - 立即获取整数中最左边事件位的索引