java 按位左移

java bitwise left shift

除了按位左移,我理解所有的按位运算(特别是 Java)。我梳理了 "stacks" 并阅读了不同页面上的许多 "explanations",但我仍然不满意。这要么是一个极其复杂的概念,要么不是很好理解和晦涩难懂。但是,我知道它在某种程度上一定是相关的,因为我已经看到 Java 算法(今天)确实使用了左移运算符“<<”。因此,如果有人能用简单的英语对此进行分解,那就太好了!

左移一位将值中的所有位向左移动一位位置。右边空出来的位置用bit 0填充,最左边的bit丢了。

这与将值乘以 2 的效果相同。

示例(为简单起见仅使用 8 位):

original value     10010011
after shift left   00100110

如果左移n位,重复n次即可(前提是n小于字长)。对于 n 大于字长的 n % wordLength.