欢迎关注微信公众号:chave-cn

JavaScript异或/与运算溢出的解决方案

位运算符是在数字底层(即表示数字的 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进制,分两段分别做运算,后再拼接 转数字

留给大家……

微信号
微信公众号

tao-s.com