public class 加减法 {public static void main(String[] args) {System.out.println(minus(-4,-3));}public static int plus(int a ,int b) {if(a == 0) {return b;}if(b == 0) {return a;}int x = (a&b) << 1; //这个相当于是进位 与一下是1说明都是1,把它们左移就是全部进位的数,再和下面没进位的一加就是结果int y = (a ^ b);//这个相当于是没进位的,或一下是1说明只有一位是1 return plus(x,y); }//其实减法相当于是加上这个数的相反数,而a的相反数等于~a+1 /*众所周知,计算机是看补码的所以,比如一个数5其原码为 0000 0000 0000 0101,而正数的原、反、补码相同,*~5就是 1111 1111 1111 1010,而这是补码,要转成十进制,先看它的原码,原码 = 补码的符号位不变各位取反加一 *即1000 0000 0000 0110 即-6,* */public static int minus(int a,int b) {if(a == b) {return 0;}return plus(a,~b+1);}}
1200字范文,内容丰富有趣,写作的好帮手!