位运算符是在数字底层(即表示数字的 32 个数位)进行操作的。如果a^b溢出或者a&b溢出,该怎么办?
方法1,两个数转2进制字符串,自己处理异或,后转数字
异或运算:
function xor(a,b){ a=a.toString(2).split('').reverse(); b=b.toString(2).split('').reverse(); var L=Math.max(a.length,b.length),re=[]; for(var i=0;i<L;i++){ re.push( a[i]&& b[i]?( a[i]!=b[i]?1:0):( a[i]||b[i] ) ) } return parseInt( re.reverse().join(''),2);}
位与运算:
function and(a, b) {a = a.toString(2).split('').reverse();b = b.toString(2).split('').reverse();var L = Math.min(a.length, b.length), re = [];for (var i = 0; i < L; i++) { re.push(a[i] & b[i] ? 1 : 0)}return parseInt(re.reverse().join(''), 2);}
方法2,你可以转16进制,分两段分别做运算,后再拼接 转数字
留给大家……