我认为这是00010010 即它试图保持符号位
另一方面,逻辑左移1位将是 10010010
这是对的吗?
答案 0 :(得分:7)
答案 1 :(得分:4)
在Java <<
中是一个逻辑左移。始终将0添加为LSB。
(请注意,Java将提升有问题的[byte]值,因此必须小心掩盖到octect!否则你将保留移位(可能包含“1”。)
然而,关于Arithmetic shift的维基百科文章指出算术左移可能导致溢出错误:
... 请注意,算术左移可能会导致溢出; 这是它与逻辑左移不同的唯一方式。
(这是不是在Java中的情况,但请记住。)
快乐的编码。
答案 2 :(得分:1)
是的,这是正确的。
x
位n
的算术左移等于x * (2^n)
。因此,在您的示例中,01001001
的{{1}}左移1
等于10010010
(73 *2¹= 146)。
答案 3 :(得分:0)
当您离开1位位置时,你是正确的。它等于10010010。
当您按如下方式向左移动4位时,您会得到以下答案。
01001001 << 4 = 10010000
当您按如下方式向右移动4位时,您会得到以下答案。
01001001 >> 4 = 00000100
由于移位而留空的位用零填充。