javascript - 左移位以实现对两个 Javascript 的幂的求幂

标签 javascript

假设我有以下内容:

var n = 3;

我想要 2^n 次幂。

所以我可以这样做:

Math.pow(2,n)

这等于 8,亲爱的。

或者我可以这样做:

1 << n

这也等于 8,亲爱的。

我正在尝试描绘位的移动。

所以我认为 n's,在这个例子中等于 3,二进制表示法是:

11

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

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

110

位向左移动一个位置,用零替换第一个位,但这等于 6 而不是 8:

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

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

要么我错误地起草了 3 的二进制符号和/或我没有正确地向左移动二进制符号中的位以输出 1 << n

谁能解释一下我的思维过程哪里不对?

最佳答案

1 << n意思是:添加n 1 的二进制表示末尾的零.
产生 1 * 2ⁿ = 2ⁿ .在你的情况下,2³ = 8 = 1000<sub>2</sub> .

n << 1意思是:添加1 n 的二进制表示末尾的零.
产生 n * 2¹ = 2*n .在你的情况下,2*3 = 6 = 110<sub>2</sub> .

所以,问题是你混淆了1 << nn << 1 .

关于javascript - 左移位以实现对两个 Javascript 的幂的求幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336423/

相关文章:

javascript - img 标签上的 onloadeddata 事件

javascript - 尽管基于类进行选择,hasClass() 仍返回 false

javascript - 如何检查时间是否为00 :00 in my case?

javascript - 绑定(bind) "document ready"和 "window scroll"

javascript - jquerytoggle() 不适用于变量

javascript - Coveo 加载更多功能

javascript - 正则表达式 点之前/之后的第 n 个序列

javascript - 从数组中的每个字符串中删除引号 - Javascript

javascript - IE 中的 document.url 问题

javascript - 有没有办法在 JavaScript 中测试多个整数(如 "correct")以使整个函数正确通过?