var c=(~a & 50919874 | a & ~50919874) ^ (~b & 50919874 | b & ~50919874);能不能简化下写法 感激不尽。

解决方案 »

  1.   

    50919874单独出来罗。。
    var d=50919874 ,c=(~a & d| a & ~d) ^ (~b & d| b & ~d);
      

  2.   

    就这个公式本身来说没什么好优化的。或者说下你要做什么,看有没有更好的算法var x = 50919874;
    var y = ~x;
    var c=(~a & x | a & y) ^ (~b & x | b & y);
      

  3.   


    老哥 这样也提升不了什么性能呀,我是想问有没有抵消去除实现方式
    你自己看a,b是干嘛的,找规律出来什么的
    a,b是变量, 因为有大量类似的代码 就想优化下
      

  4.   

    谢了, 一个JS文件里有类似代码几十行,所以想优化下。目前也无计可施 冗余就冗余吧
    你可以写成函数。然后多次调用啊
    function f(a,b,x) {
    return (~a & x | a & ~x) ^ (~b & x | b & ~x);
    }var c=f(a,b,50919874);
    var g=f(e,f,50919874);
      

  5.   

    谢了, 一个JS文件里有类似代码几十行,所以想优化下。目前也无计可施 冗余就冗余吧
    你可以写成函数。然后多次调用啊
    function f(a,b,x) {
    return (~a & x | a & ~x) ^ (~b & x | b & ~x);
    }var c=f(a,b,50919874);
    var g=f(e,f,50919874);
    已经找到方法 经过测试 等同于
    (~a & 1 | a & ~1) ^ (~b & 1 | b & ~1)其他
    (~(~a | ~1) & -1)
    等同于
    Math.abs(a%2)非常感谢版主的提议,不过能不用函数就不用函数了 毕竟要多拐个弯