用最有效率的方法计算 2 乘以 8
2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次 方)。
讲解:
-
二进制表示:
首先,让我们看看数字2在二进制中的表示:
2 = 0010 (二进制) -
左移操作:
当我们对2进行左移3位操作时,每一位都向左移动3次,右边用0填充:
0010 (原始数字2)
左移1位:0100 (等于4)
左移2位:1000 (等于8)
左移3位:10000 (等于16)
所以,2 << 3 的结果是 16。 -
为什么这等同于乘以8:
每左移一位,数值就乘以2。左移3位相当于乘以2三次:
2 * 2 * 2 = 8
因此,2 << 3 等同于 2 * 8 = 16
-
一般规则:
对于任意整数n和非负整数k:
n << k 等价于 n * (2^k) -
效率:
在计算机中,位运算通常比乘法运算更快,因为它们直接操作二进制位,而不需要复杂的乘法算法。 -
右移操作:
与左移相反,右移操作(>>)相当于除以2的幂。例如,16 >> 3 等于 2。
总结:2 << 3 是一种高效的方法来计算 2 * 8,它利用了二进制表示和位运算的特性,通常比直接的乘法运算更快。
Math.round(11.5) 等于多少?Math.round(-11.5) 等于多少
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍 五入的原理是在参数上加0.5 然后进行下取整。
讲解:
-
Math.round() 函数:
这个函数用于对一个数进行四舍五入,将其舍入到最接近的整数。 -
正数的情况 (Math.round(11.5)):
- 11.5 + 0.5 = 12
- 12 的下取整是 12
所以 Math.round(11.5) 返回 12
- 负数的情况 (Math.round(-11.5)):
- -11.5 + 0.5 = -11
- -11 的下取整是 -11
所以 Math.round(-11.5) 返回 -11
- 四舍五入的原理:
“在参数上加 0.5 然后进行下取整” 这个描述确实很准确。这里’s why:
-
对于正数:
如果小数部分 < 0.5,加 0.5 后仍小于下一个整数,下取整后就是原整数部分。
如果小数部分 ≥ 0.5,加 0.5 后会大于或等于下一个整数,下取整后就是下一个整数。 -
对于负数:
如果小数部分的绝对值 ≤ 0.5,加 0.5 后仍大于下一个整数,下取整后就是原整数部分。
如果小数部分的绝对值 > 0.5,加 0.5 后会小于下一个整数,下取整后就是下一个整数。
-
为什么对负数有效:
对于负数,这个方法之所以有效,是因为在数轴上,负数的"下一个整数"实际上是数值更小的数。例如,-11 比 -12 大。 -
边界情况:
注意,对于 .5 的情况,无论是正数还是负数,都会向上舍入(即远离零的方向)。这就是为什么 11.5 舍入到 12,而 -11.5 舍入到 -11。
总结:Math.round() 函数通过在数字上加 0.5 然后下取整的方式实现了四舍五入。这个方法对正数和负数都有效,并且能够正确处理 .5 的边界情况。