向左移位位以实现取幂到两个Javascript的力量

时间:2015-10-25 23:46:12

标签: javascript

说我有以下内容:

var n = 3;

我想要2 ^ n的力量。

所以我能做到:

Math.pow(2,n)

等于8,甜蜜。

或者我能做到:

1 << n

这也等于8,甜蜜。

我试图描绘位的移位。

所以我认为n,在这个例子中等于3,二进制符号是:

11

即(1 * 2 ^ 1)+(1 * 2 ^ 0)= 3

然后我执行操作1 << n并且位向左移一,我认为1 << n的输出用二进制表示法是这样的:

110

这些位向左移动一个位置,将第一位替换为零BUT,这等于6而不是8:

即(1 * 2 ^ 2)+(1 * 2 ^ 1)+(0 * 2 ^ 0)= 6

不甜,在位移左后我根据我的二进制表示计算1 << n等于6,1 << n等于8所以我的左位移操作的二进制表示法不正确

要么我正在草拟错误的二进制表示法和/或我没有正确地将我的二进制表示法中的位移位到1 << n的输出

有人能解释我的思维过程不正确吗?

1 个答案:

答案 0 :(得分:4)

1 << n表示:在n的二进制表示的末尾添加1个零。 这会产生1 * 2ⁿ = 2ⁿ。在您的情况下,2³ = 8 = 10002

n << 1表示:在1的二进制表示的末尾添加n个零。 这会产生n * 2¹ = 2*n。在您的情况下,2*3 = 6 = 1102

因此,问题在于您混淆了1 << nn << 1