Javascript 使用非常大的位标志(除了内存之外)有什么缺点吗

Javascript 使用非常大的位标志(除了内存之外)有什么缺点吗,javascript,Javascript,我意识到位移动是用32位处理的,但我意识到(至少在现代浏览器中),我可以声明相当大的数字-即: console.log([ 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

我意识到位移动是用32位处理的,但我意识到(至少在现代浏览器中),我可以声明相当大的数字-即:

console.log([
    0xFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
].join('\n'));
看起来有效且正确。我已经测试了这个方法的性能,它似乎比任何布尔运算都快得多,所以我想转向这个方法——但是,我有点厌倦使用大量的数字,因为我以前从未见过这样的操作。您是否看到或遇到使用大位标志的问题


此处的性能基准:

数组中的数字“无效且正确”。它们会溢出32位边界,因此会转换为IEE754 64位双精度,因此当设置太多数字时,它们会降低精度。
恐怕你不能用这些数字来执行你的行动

编辑:代码的输出是(在最新的Chrome/mac操作系统上):

(正如你在这把小提琴中看到的:)


因此,即使是第二个数字也似乎已经超出了范围。

我个人看到的主要缺点是代码可读性差。你可能需要那么多标志位做什么呢???你实际上只有52位(或者是53位?这总是让我困惑)位可供使用,即13 F。另外,您必须小心,因为JavaScript中的许多按位操作会进一步截断为32位。我不会使用移位,只是和/或运算。我应该说“出现”。你说得对。&操作失败。
"18446744073709552000
7.922816251426434e+28
3.402823669209385e+38
1.461501637330903e+48
6.277101735386681e+57
2.695994666715064e+67
1.157920892373162e+77
4.9732323640978664e+86
2.13598703592091e+96
9.173994463960286e+105
3.940200619639448e+115
1.6923032801030364e+125
4.542742026847543e+133
1.2194330274671845e+142
3.273390607896142e+150
8.78694100496718e+158
2.3587265155134633e+167
6.331658277711476e+175
1.6996415770136547e+184"