java都是有符号数,如果没有溢出,正数加法还是正数

解决方案 »

  1.   

    //无符号int加法
    //返回一个long型,因为用int可能会溢出
    //a和b可能作为无符号数处理
    public long uAdd(int a,int b){
        long a1,b1;
        a1=a>>>1;
        a1<<=1;
        a1|=(a<<31)>>>31;
        
        b1=b>>>1;
        b1<<=1;
        b1|=(b<<31)>>>31;
        return a1+b1;
    }
    其他操作类似.
      

  2.   

    这里主要是屏蔽符号位
    注意:
    不要企图用 (a|0l)+(b|0l)
    上面的程序也不能连写
      

  3.   

    treeroot(根根) (
    谢谢了