为什么在JavaScript和C#中使用&运算符时会返回不同的值?

dev*_*one 5 javascript c#

我使用&运算符在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)

有任何想法吗?

Ale*_* K. 5

javascript中的按位运算符将操作数转换为带符号的32位整数(来自本机IEEE 754浮点数存储在其中).


Bri*_*ian 2

在我看来,您超出了 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)

快乐编码!