2016-01-29 69 views
-3

我理解所有的按位运算(特别是Java),除了按位左移。我梳理了“堆栈”并在不同的页面上阅读了许多“解释”,但我仍然不满意。要么这是一个非常复杂的概念,要么它不是很好理解和模糊。但是,我知道它在某种程度上必须是相关的,因为我已经看到Java算法(今天)确实使用左移运算符“< <”。所以如果有人能用简单的英语来解决这个问题,那就太棒了!java按位左移

+9

你明白两个右移但不左移? – khelwood

+0

@khelwood尽管我可以猜测你在暗示什么,但如果你只是说第一次感觉没有代码说话,生活会更好...... – Dimpermanence

+2

我并不是暗示任何事情。我对你断言你了解所有其他的按位操作(逻辑上必须包括右移)表示困惑,但你不明白左移甚至不能提出有关它的具体问题。我想验证你是否理解右移,因为这些知识将使解释左移更容易。 – khelwood

回答

0

左移一位将值的所有位移动到左边一位。右侧空闲的位置填充0位,最左侧的位丢失。

这是由2

实施例的值乘以相同的效果(使用只是8比特为简单起见):

original value  10010011 
after shift left 00100110 

如果移位n位左,只是重复n次(如果n小于字长)。对于大于字长移位n的字长。

+0

虽然没有比这更多的东西吗?没有某些条件可以使数字的值变得不明确等等。 – Dimpermanence

+0

不,那都是.. – Henry

+0

我认为我可能已经推翻了这个。好吧!谢谢亨利。这绝对是重复的,但我选择你的答案作为正确的答案。 – Dimpermanence