//另类加法,不能使用算数运算符 int addAB(int A, int B) { // write code here int xor, and; while (B != 0) { xor = (int)(A ^ B); //异或运算结果与两数加的结果相同,不包含进位 // 1010 //+ 1101 //=10111 异或结果为0111,不包含进位 and = (int)((A & B) << 1); //与运算结果和两数相加进位相同(进位结果0/1), //与运算结果为1000,第四位相加产生进位,左移一位为10000,与异或结果相加: // 0111 //+10000 //=10111 A = xor; B = and; //将与运算结果左移一位给B(因为是进位,要与前一位相加),再进行异或(相当于加法),直至没有进位了。 } return A; }
牛客网_另类加法
猜你喜欢
转载自www.cnblogs.com/dabai56/p/10955412.html
今日推荐
周排行