1

...并带入 0。

例如:

1111 0110 >> 2

11 1111 01

根据一些笔记。

为什么要引入 1?为什么不把最左边的位保持在 1 并带入 0?

移动到正确的位置不是像除以 2 一样吗?如果是这样,不应该带入0吗?

4

2 回答 2

3

您希望右移与除以 2 相同。假设这是一个有符号的 8 位量,则为-128

1000 0000

这是-64

1100 0000

所以这是你建议的反例。

于 2013-09-19T18:34:10.423 回答
2

它被称为“符号扩展”,它的存在正是为了产生除以二的效果。如果最左边的位变为 0,则原来负数的符号将变为正数。如果只有最左边的位保持为 1,而后面的位变为 0,则结​​果与除以 2 无关。

如果您希望在左侧添加零,则有一个特殊的运算符:>>>.

注意 Java 只有一个无符号整数,它是char. 在这种数据类型上,>>通过在左侧添加零来工作。

于 2013-09-19T18:28:42.247 回答