// ShowbitsKL.java Copyright (c) 2005 Kari Laitinen // http://www.naturalprogramming.com // 2005-06-21 File created. // 2005-06-21 Last modification. // A solution to exercises 16-3 and 16-4. import java.util.* ; class ShowbitsKL { static void print_in_binary_form( int given_integer ) { int bit_mask ; int number_of_bits_to_print ; if ( given_integer < 0x100 ) { bit_mask = 0x80 ; number_of_bits_to_print = 8 ; } else if ( given_integer < 0x10000 ) { bit_mask = 0x8000 ; number_of_bits_to_print = 16 ; } else { bit_mask = 0x80000000 ; number_of_bits_to_print = 32 ; } int one_bit_in_given_integer ; int bit_counter = 0 ; while ( bit_counter < number_of_bits_to_print ) { one_bit_in_given_integer = given_integer & bit_mask ; if ( one_bit_in_given_integer == 0 ) { System.out.print( "0" ) ; } else { System.out.print( "1" ) ; } bit_mask = bit_mask >>> 1 ; bit_counter ++ ; if ( ( bit_counter % 4 ) == 0 ) { // Printing a space after each four bits. System.out.print( " " ) ; } } } public static void main( String[] command_line_parameters ) { Scanner keyboard = new Scanner( System.in ) ; if ( command_line_parameters.length == 1 ) { String given_number_as_string = command_line_parameters[ 0 ] ; int given_number ; if ( given_number_as_string.length() > 1 && ( given_number_as_string.charAt( 1 ) == 'x' || given_number_as_string.charAt( 1 ) == 'X' ) ) { // A hexadecimal number was given given_number = Integer.parseInt( given_number_as_string.substring( 2 ), 16 ) ; // Alternatively, the following statement could be used // in place of the previous statement. // given_number = Integer.decode( given_number_as_string ) ; System.out.printf( "\n 0x%X is ", given_number ) ; print_in_binary_form( given_number ) ; System.out.print( "(binary) " + given_number + " (decimal) " ) ; } else { // We'll suppose that a decimal number was given. given_number = Integer.parseInt( given_number_as_string ) ; System.out.print( "\n " + given_number + " is " ) ; print_in_binary_form( given_number ) ; System.out.printf( "(binary) %X (hexadecimal) ", given_number ) ; } // We'll print the number as a character if it is less // than 256. if ( given_number < 0x100 ) { System.out.print( "\'" + (char) given_number + "\' as character \n\n" ) ; } else { System.out.print( "\n\n" ) ; } } else { System.out.print( "\n\n Give a number on the command line.\n\n" ) ; } } }