2011-11-10 6 views
0

저는 C#과 자바 스크립트 간의 차이점을 알아 내려고하고 있습니다. 좋아, 자바 스크립트 코드를 가지고 :JavaScript 비트 연산자

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

이것을 실행 한 후, 6051320169.이

이제 C#으로이 일 후가 될 것 "BT는"

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

1756352873 될 것입니다 확실히 동일하지 않습니다. Javascript가 C#이 어떻게 보이는지 보지 못하는 이유는 무엇입니까?

답변

3

당신은 당신의 정수 2,147,483,647의 한계를 오버 플로우 때문에 C#에서이

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

이것은 C#에서처럼 작동하기 위해이 작업을 수행 할 수 있습니다.

+0

+1 또는 BT = ((^ 16,843,134 (16,843,134 - 1)의) * j)의 체크 INT'상기 오버플 –

+1

와우 공개 ', 이것은 단이다. 항상 더 많은 것을 배우기 위해 운동으로 자바로 일부 체스 코드를 변환하는 Im으로 저수준 일들을 이해해야 할 때까지 지금까지 이런 종류의 물건을 너무 오래 사용했습니다. 대단히 감사합니다. – user1039705