2011-11-10 104 views
0

我想弄清楚C#和Javascript之间的一些区别。好了,借这个代码在Javascript:Javascript按位运算符

var j = 0x783a9b23; 
var bt = ((16843134^(16843134 - 1)) * j); 

执行此操作后, “BT” 将是6051320169.

现在,在C#这样做后:

int j = 0x783a9b23; 
int bt = ((16843134^(16843134 - 1)) * j); 

“BT” 将是1756352873当然不一样。任何想法为什么Javascript没有看到C#如何看待它?

回答

3

你可以因为在C#这样做是为了使它像在C#中工作

var j = 0x783a9b23; 
var bt = ((16843134^(16843134 - 1)) * j); 
bt = bt % 2147483647 

这是你的整数溢出2,147,483,647极限。

+0

+1或'int bt = checked((16843134 ^(16843134 - 1))* j);'显示溢出 –

+1

哇,这很甜。总是把这种类型的东西花了很长时间直到现在,我真的需要了解更低层次的东西,因为我把一些国际象棋代码转换成Javascript,只是为了学习更多。太感谢了。 – user1039705