2013-04-04 38 views
6

Tôi đang làm việc trên BitWise AND toán tử trong javascript.Bitwise & trong javascript không trả về kết quả mong đợi

Tôi có hai 32 bit Nunber

4294901760 (11111111 11111111 00000000 00000000) and 

4294967040 (11111111 11111111 11111111 00000000) 

khi tôi và chúng Bitwise 4294901760 & 4294967040 tôi đã -65.536 kết quả là mặc dù kết quả nên 4294901760.

Có thể bất kỳ ai vui lòng hướng dẫn tôi tôi đang thiếu thứ gì đó không? Hoặc cách chính xác để làm điều đó là gì. Cảm ơn

+0

bạn có thể chia sẻ với chúng tôi mã javascript của bạn có hoạt động '&' không? – Jace

+2

console.log (4294901760 & 4294967040); đây là mã hoàn chỉnh :) – user2243651

Trả lời

1

Phép toán hoạt động bitwise trong javascript là converted to signed 32 bit integers. Unsigned 4294901760 có cùng biểu diễn nhị phân như đã ký -65536. Bạn có thể sử dụng >>> 0 để chuyển đổi kết quả của & để unsigned, ví dụ:

(4294901760 & 4294967040) >>> 0 
+0

cảm ơn rất nhiều @pfyod – user2243651

0

Kiểm tra này thực hiện tùy chỉnh của VÀ hoạt động Bitwise:

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

Các vấn đề liên quan