2013-04-04 11 views
6

BitWise AND operatörü üzerinde javascript üzerinde çalışıyorum.Bitwise & javascript beklenen sonucu döndüremiyor

Ben sonuç 4294901760 olmalıdır rağmen ve onları 4294901760 & 4294967040 bit düzeyinde bir sonucu olarak -65536 var iki 32 bitlik Nunber

4294901760 (11111111 11111111 00000000 00000000) and 

4294967040 (11111111 11111111 11111111 00000000) 

.

Herhangi biri beni yönlendirebilir mi? Ya da bunu yapmanın doğru yolu nedir. Teşekkür

+0

bize sizin javascript kodu ile paylaşabilir Sen imzasız, örneğin üzere & sonucunu dönüştürmek için >>> 0 kullanabilirsiniz '' 'işlemi yapar? – Jace

+2

console.log (4294901760 & 4294967040); bu tam bir kod :) – user2243651

cevap

1

İşlenenler. İmzasız 4294901760, imzalanmış -65536 ile aynı ikili gösterime sahiptir.

(4294901760 & 4294967040) >>> 0 
+0

teşekkürler alot @pfyod – user2243651

0

Kontrol bu özel uygulama VE bit düzeyinde işlem:

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