我使用&运算符在JavaScript和C#中使用了相同的过程,但结果却不同.
C#代码
Int64 x = (634586400000000000 & 4611686018427387903);
x= 634586400000000000;
Run Code Online (Sandbox Code Playgroud)
JavaScript代码
var x = (634586400000000000 & 4611686018427387903);
x= 0;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
在我看来,您超出了 JavaScript 的最大整数值。JavaScript 整数支持的最大值指定为 2^53。
更新:
我在这里的最初响应不正确 - 问题不是 JavaScript 的最大整数值,而是 & 符号操作处理的每个操作数的最大值:
var biggest = 4294967291; // maximum 32 bit unsigned integer
alert(biggest & 1); // alerts 1
alert((biggest + 1) & 1); // alerts 0
Run Code Online (Sandbox Code Playgroud)
快乐编码!
乙