import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; public class Float754 extends JApplet { JTextField inputFloatField; JTextField inputSignField; JTextField inputExponentField; JTextField inputMantissaField; JLabel errorLabel; public void init() { Container container = getContentPane(); int panelRowsSize = 3; container.setLayout( new GridLayout( panelRowsSize, 1 ) ); JPanel [] panelRows = new JPanel[panelRowsSize]; for (int i=0; i>31)&1) ); String result=""; for (int i=30; i>=23; i--) result += ((num>>i) & 1); inputExponentField.setText( result ); result = ""; for (int i=22; i>=0; i--) result += ((num>>i) & 1); inputMantissaField.setText( result ); } } } ); inputSignField = new JTextField( 2 ); //only 1 needed, but looks better inputSignField.setFont( bigFont ); panelRows[1].add( inputSignField ); TextFieldHandler signFieldHandler = new TextFieldHandler(); inputSignField.addActionListener( signFieldHandler ); inputExponentField = new JTextField( 9 ); inputExponentField.setFont( bigFont ); panelRows[1].add( inputExponentField ); inputExponentField.addActionListener( signFieldHandler ); inputMantissaField = new JTextField( 24 ); inputMantissaField.setFont( bigFont ); panelRows[1].add( inputMantissaField ); inputMantissaField.addActionListener( signFieldHandler ); errorLabel = new JLabel( "" ); errorLabel.setFont( bigFont ); panelRows[2].add( errorLabel ); } public void start() { inputFloatField.requestFocusInWindow(); } private class TextFieldHandler implements ActionListener { public void actionPerformed( ActionEvent event ) { errorLabel.setText( "" ); if ( inputSignField.getText().length() != 1 || inputExponentField.getText().length() != 8 || inputMantissaField.getText().length() != 23 ) errorLabel.setText( "Must be 1, 8, and 23 bits" ); else { char c; int num = 0; float fnum=0; c = inputSignField.getText().charAt( 0 ); if ( c == '1' ) num = (1<<31) | num; for (int i=30; i>=23; i--) { c = inputExponentField.getText().charAt( 31-1-i ); int j = c=='0' ? 0 : 1; num = (j<=0; i--) { c = inputMantissaField.getText().charAt( 31-9-i ); int j = c=='0' ? 0 : 1; num = (j<