// Fig. 18.06: PrintBits.java
// Printing an unsigned integer in bits 
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class PrintBits extends Applet
             implements ActionListener {
   private TextField input, output;

   public void init()
   {
      add( new Label( "Enter an integer " ) );
      input = new TextField( 10 );
      input.addActionListener( this );
      add( input );

      add( new Label( "The integer in bits is" ) );
      output = new TextField( 35 );
      output.setEditable( false );
      add( output );
   }

   public void actionPerformed( ActionEvent e )
   {
      int val = Integer.parseInt( e.getActionCommand() );
      output.setText( getBits( val ) );
   }

   public String getBits( int value )
   {
      int displayMask = 1 << 31;
      StringBuffer buf = new StringBuffer( 35 );

      for ( int c = 1; c <= 32; c++ ) {
         buf.append(
            ( value & displayMask ) == 0 ? '0' : '1' );
         value <<= 1;

         if ( c % 8 == 0 )
            buf.append( ' ' );
      }

      return buf.toString();
   }
}