2011-11-10 107 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