【发布时间】:2021-04-08 00:34:26
【问题描述】:
我有一堆大小翻倍的垃圾箱,从 32 号开始。这些垃圾箱被分成两半并添加到较低的垃圾箱中,但这对于这个问题并不重要。我目前正在硬编码一个“max”16777216,它是最大 bin 的大小。
let bins = [
[], // 1 = 32
[], // 2 = 64
[], // 3 = 128
[], // 4 = 256
[], // 5 = 512
[], // 6 = 1024
[], // 7 = 2048
[], // 8 = 4096
[], // 9 = 8192
[], // 10 = 16384
[], // 11 = 32768
[], // 12 = 65536
[], // 13 = 131072
[], // 14 = 262144
[], // 15 = 524288
[], // 16 = 1048576
[], // 17 = 2097152
[], // 18 = 4194304
[], // 19 = 8388608
[0], // 20 = 16777216
我想根据平台上的可用内存动态确定 bin 的数量,作为 32 的因子。因此,如果机器上有 24 TB 的可用内存,即 1.92e+14 位,或者6e+12 个 32 位块。因此,我会按照与数字增长方式相同的模式,将该数字四舍五入到最接近的 32 的倍数倍数。
如何使用通用方程以编程方式执行此操作?我通过手动收集这些数字:
a = 1 * 32
b = a * 2
c = b * 2
d = c * 2
...
- 如何使用泛型方程做到这一点?
- 如何有效地四舍五入到最接近的数字?
【问题讨论】:
-
No
(i * 32) + (i * 32 * (2 * (i - 1)))和i == 19给出不在列表中的 22496。 -
我认为是 2**(4+i),其中 ** 我的意思是
power of -
这似乎很合适:
32 * (2^(i-1))where ^ = power of
标签: javascript math binary