Trick 1
In the first java program to swap two numbers without a third variable, we swap the values of the two variables in 3 steps which are simple addition and subtractions.
import java.lang.*; class Swapping { public static void main (String[] args) throws java.lang.Exception { int a=5,b=10; a=b+a; //now a =15 b=a-b; //now b= 5 a=a-b; // now a=10 (done) System.out.println("a = "+a+" b= "+b); } }
Trick 2
In the second java program to swap two numbers without a third variable, we swap them in a single statement. The statement contains an assignment, addition and subtraction.
import java.lang.*; class Swapping { public static void main (String[] args) throws java.lang.Exception { int a=10,b=30; a=a+b-(b=a); //10+30-(10) a becomes 30 // b is assigned with 10 in the same line of code System.out.println("a= "+a+" b= "+b); } }
Trick 3
is used in the program. The binary representation of the numbers, the bitwise xor operation on them and the result are shown in the c program as comments. For simplicity and convenience, we are representing numbers using only 5 bits. The real size of an integer in java is much larger. We show only the rightmost 5 bits. It is enough to illustrate the examples with small integers. The program is as follows:
import java.lang.*; class Swapping { public static void main (String[] args) throws java.lang.Exception { int a=8,b=12; /* a: 8 : 01000 b:12 : 01100 */ a=a^b; /* a: 01000 ^ b: 01100 a= 00100 (4) */ b=a^b; /*a: 00100 ^ b: 01100 b= 01000 (8) */ a=b^a; /* b: 01000 ^ a: 00100 a= 01100 (12) */ System.out.println("a= "+a+" b= "+b); } }
Trick 4
import java.lang.*; class Swapping { public static void main (String[] args) throws java.lang.Exception { int a=14,b=4; /* a: 14 : 1110 b: 4 : 0100 ~a: : 0001 ~b: : 1011 */ a=b-~a-1; /* b: 0100 - ~a: 0001 0011 - 1: 0001 0010 now a= 0010 */ b=a+~b+1; /* a: 0010 + ~b: 1011 1: 0001 now b: 1110 (14) ~b: 0001 */ a=a+~b+1; /* a: 0010 + ~b: 0001 1: 0001 now a: 0100 (4) */ System.out.println("a= "+a+" b= "+b); } }
No comments:
Post a Comment