/* Lab : Mock Test 01 Day : Tuesday [ 16 Sept 08 ] Problem Number: 01 Problem Title : Binary to Decomal conversion Theory : The approach followed in this solution has following parts 1. get a integer from command line for this we convert args[0] to an integer abd store result to binaryNumberEntered 2. make the entered number positive if it is negative. 3. reverse the digits of the entered number and store to enteredNumberDigitReversed This is making LSB to MSB and so on, this is required because during conversion MSB is required first, 4. repeatedly fectch LSB from enteredNumberDigitReversed, and add it to decomalEquivalent after multiplication of decomalEquivalent with 2. 5. finally multiply decomalEquivalent with sigh. Trick : the tricky part is that if LSB of binaryNumberEntered is zero then it's reverse is mis represented. so we used a pseudo symbol 2 to be present as LSB of binaryNumberEntered. */ class sol_MockTest01_prob01{ public static void main(String args[]) { int sign, binaryNumberEntered, enteredNumberDigitReversed, decomalEquivalent ; binaryNumberEntered = Integer.parseInt(args[0]); System.out.print(" Decimal equivalent of ("+ binaryNumberEntered +") "); if(binaryNumberEntered < 0 ) { sign = -1; binaryNumberEntered = binaryNumberEntered * -1 ; } else { sign = +1; } enteredNumberDigitReversed = 2; while(binaryNumberEntered > 0 ) { enteredNumberDigitReversed = enteredNumberDigitReversed*10 + binaryNumberEntered%10; binaryNumberEntered /= 10; } decomalEquivalent = 0; while( enteredNumberDigitReversed != 2 ) { decomalEquivalent = decomalEquivalent*2 + enteredNumberDigitReversed%10 ; enteredNumberDigitReversed /= 10; } decomalEquivalent = sign * decomalEquivalent ; System.out.println("is "+ decomalEquivalent); } }