2013-04-04 189 views
6

我正在使用BitWise AND运算符在JavaScript中。按位&在JavaScript没有返回预期的结果

我有两个32位nunber

4294901760 (11111111 11111111 00000000 00000000) and 

4294967040 (11111111 11111111 11111111 00000000) 

当我和他们按位4294901760 & 4294967040我-65536结果虽然结果应该是4294901760

任何人都可以请指导我我错过了什么吗?或者什么是正确的做法。 感谢

+0

你能与我们的javascript代码共享那'''操作? – Jace 2013-04-04 07:29:40

+2

console.log(4294901760&4294967040);这是完整的代码:) – user2243651 2013-04-04 07:32:46

回答

1

操作数。无符号4294901760具有与签署的-65536相同的二进制表示形式。 您可以使用>>> 0来转换结果的&无符号,如:

(4294901760 & 4294967040) >>> 0 
+0

非常感谢@pfyod – user2243651 2013-04-04 08:47:36

0

检查的这个定制的实施和位运算:

function and(a, b){ 
    a = a.toString(2).split(''); 
    b = b.toString(2).split(''); 
    var length = Math.max(a.length, b.length); 
    function padZeroes(array, size){ 
     while(array.length <= size){ 
      array.unshift('0'); 
     } 
    } 
    padZeroes(a, length); 
    padZeroes(b, length); 
    var result = []; 
    $.each(a, function(i, v){ 
     result.push((a[i]==b[i] && a[i]!='0')?'1':'0'); 
    }); 
    var r = parseInt(result.join(''), '2'); 
    return r; 
} 

jsfiddle

相关问题