java 不使用 “+,-,*,/” 运算符计算两个整数的和

来源:互联网 发布:大乐透软件0416ren 编辑:程序博客网 时间:2024/05/21 15:10
    /**     * 不使用 +,-,* ,/ 计算两个整数的和     * */    public  static void testGetAdd(){        int a = 5;//101        int b = 7;//111        while (b!=0){            int t = a^b;            System.out.println("testGetAdd a^b binary="+Integer.toBinaryString(t));            b = (a&b)<<1;            System.out.println("testGetAdd (a&b)<<1 binary="+Integer.toBinaryString(b));            a = t;        }        /**         * 1.这一步是通过'异或运算'计算每一位相加后的值,不算进位。a^b         * 101^111 即:         * 101         * 111         * ----         * 010         * *******************         * 2.得到进位 a&b<<1         * 101&111 即:         * 101         * 111         * ---         * 101         * 计算出结果是对应位相加后需要进位到高位的值,需要左移动一位,以便加到高位上去         * 101<<1 = 1010         * ********************         * 3.然后把两个数字再加一起就是'和',但是相加过程还会有进位,于是循环相加过程即第一步与第二步,直到没有进位         * (这一步其实就是递归的思路,还是两个数字相加)         * */    }



0 0
原创粉丝点击