Javascript 以有趣的方式查找JS max整数值失败

Javascript 以有趣的方式查找JS max整数值失败,javascript,Javascript,今天我试图找到一种有趣而神秘的方法来确定JavaScript的最大整数值。其中一种方法是: ~(+!!![]) >>> (+!![]); 它的计算结果实际上是 ~0 >>> 1 但它返回的是2147483647,而不是应该返回的4294967295。为什么?当然,对于无符号整数,后一个将是此操作的结果,而对于有符号整数,我的结果是正确的。但是如何强制呢 找到最大整数,然后将其右移1位,再除以2。使用: ~0 >>> 0 以获取最大整数

今天我试图找到一种有趣而神秘的方法来确定JavaScript的最大整数值。其中一种方法是:

~(+!!![]) >>> (+!![]);
它的计算结果实际上是

~0 >>> 1

但它返回的是2147483647,而不是应该返回的4294967295。为什么?当然,对于无符号整数,后一个将是此操作的结果,而对于有符号整数,我的结果是正确的。但是如何强制呢

找到最大整数,然后将其右移1位,再除以2。使用:

~0 >>> 0
以获取最大整数


将其转换为“有趣”的方式,我将留给读者作为练习。

什么是“>>>0”?移位0位又不是一回事了?是的。但是你必须使用
>
操作符来得到一个无符号的结果。我的方法是:1111..1111,然后移位:011111…111。您要做的是111111111,并且不移位,只删除符号位:0111…1111。有什么区别?我没有删除符号位。我将
1111…1111
视为未签名。好的,这就解释了。多谢各位+从我这里得到1。CheeseOne问题4294967295不是Javascript中的最大整数值。或者您只是在检查最大32位int值。