There is a mapping between the input (number) strings to their corresponding 2s complement code:
Input string 2's complement representation (32 bits) ------------- -------------------------------- "0" <--> 00000000000000000000000000000000 "1" <--> 00000000000000000000000000000001 "2" <--> 00000000000000000000000000000010 "3" <--> 00000000000000000000000000000011 ... ... "15" <--> 00000000000000000000000000001111 "-1" <--> 11111111111111111111111111111111 "-2" <--> 11111111111111111111111111111110 "-3" <--> 11111111111111111111111111111101 ... ... |
The parseInt( ) implements this mapping !!!
public static int parseInt( String s ) { if ( s.equals("0") ) return 0; // returns: 00000000000000000000000000000000 else if ( s.equals("1") ) return 1; // returns: 00000000000000000000000000000001 else if ( s.equals("2") ) return 2; // returns: 00000000000000000000000000000010 ... else if ( s.equals("10") ) return 10; // returns: 00000000000000000000000000001010 else if ( s.equals("11") ) return 11; // returns: 00000000000000000000000000001011 ... else if ( s.equals("-1") ) return -1; // returns: 11111111111111111111111111111111 else if ( s.equals("-2") ) 1eturn -2; // returns: 11111111111111111111111111111110 ... } |
Remember that the compiler will translate every number into a 2s compl (binary) representation !!!
|
Now that we know what parseInt( ) must do, let's develop the algorithm in a piece meal fashion