请您解释以下几行,并附上一些很好的例子。
n的左算术移位是 相当于乘以2 n (假设价值不是 溢出)。
和
正确的算术 将n乘以2的补码值 相当于除以2 n 和 向负无穷大四舍五入。如果 二进制数被视为'' 补充,然后相同的右移 操作导致除以2 n 并向零舍入。
答案 0 :(得分:3)
我将解释在我们更熟悉的基础中发生的事情:10。
在基数10中,假设你有一个数字N = 123。现在,你将这个数字“移动”到左边的k = 3个位置,用0填充空的数字。所以你得到X = 123000。
注意X = N * 10 k 。
基础2的情况类似。
Example 1 (base 10) | Example 2 (base 2)
|
N = 123 | N = 110101 (53 in base 10)
k = 3 | k = 2 (in base 10)
N << k = 123000 | N << k = 11010100 (212 in base 10)
|
10^k = 1000 | 2^k = 100 (in base 2; 4 in base 10)
N * 10^k = 123000 | N * 2^k = 11010100 (53 * 4 = 212 in base 10)
|
右移的情况只是过程的一个镜像,在基数10中也是类似的。例如,如果我在基数10中有123456,而我“向右移”3个位置,我得到123.这是123456/1000(整数除法),其中1000 = 10 3 。
答案 1 :(得分:1)
答案 2 :(得分:0)
创建自己的示例很容易。
考虑二进制中的五个101
。左移一次,得到1010
,这是十进制的二进制。再做一次,你得到的是10100
二十岁......