/*
 
/**
 *File: U344.java
 *Created on: Nov 19, 2002
 *@Author Rodolfo Violi Ic01
 *
 * 
 */
 
public class U344
{
	public static void main (String [] args)
	{	
		char inputchar=0;
		hr();
		while (inputchar<'1' || inputchar>'3')
		{
			System.out.println("Was möchtest du eingeben? (1=float,2=int,3=bits): ");
			inputchar =InOut.getChar();
		}
		hr();
		int inputtype=Character.getNumericValue(inputchar);
				
		switch (inputtype)
		{
			case 1:		System.out.println("Float eingeben: ");
						float f=InOut.getFloat();
						hr();
						output(f);
						break;
						
			case 2:		System.out.println("Integer eingeben: ");
						int i=InOut.getInt();
						hr();
						output(i);
						break;
						
			case 3:		System.out.println("Bitfolge eingeben: ");
						System.out.println("Position: ");
						System.out.println("12345678901234567890123456789012");
						InOut.skipLine();
						String s=InOut.getLine();
						hr();
						output(s);
						break;
		}
		
	}
		
		
	static void output(float f)
	{
		//float
		System.out.println("Eingegebene Zahl als Float: "+f);
		int i=Float.floatToIntBits(f);
		System.out.println("Integer Bits: "+i);
		System.out.println("Binary String: "+floatSegmentation(Integer.toBinaryString(i))+"\n");
		
		hr();
		
		i++;
		System.out.println("Nächstgrössere Zahl als Float: "+Float.intBitsToFloat(i));
		System.out.println("Integer Bits: "+i);
		System.out.println("Binary String: "+floatSegmentation(Integer.toBinaryString(i))+"\n");
		
		hr();
		
		i-=2;
		System.out.println("Nächstkleinere Zahl als Float: "+Float.intBitsToFloat(i));
		System.out.println("Integer Bits: "+i);
		System.out.println("Binary String: "+floatSegmentation(Integer.toBinaryString(i))+"\n");
		
		hr();
	}
	
	static void output(int i)
	{
		System.out.println("Eingegebene Zahl als Integer: "+i);;
		System.out.println("Binary String: "+intSegmentation(Integer.toBinaryString(i))+"\n");
		
		hr();
		
		i++;
		System.out.println("Nächstgrössere Zahl als Integer: "+i);
		System.out.println("Binary String: "+intSegmentation(Integer.toBinaryString(i))+"\n");
		
		hr();
		
		i-=2;
		System.out.println("Nächstkleinere Zahl als Integer: "+i);
		System.out.println("Binary String: "+intSegmentation(Integer.toBinaryString(i))+"\n");
		
		hr();
	}
	
	static void output(String s)
	{
		System.out.println("Bits: "+s+"\n");
		int intbits=0;
		String sign="";
		for(int i=0; i<s.length(); i++)
		{
			intbits*=2;
			if(s.charAt(i)=='1') intbits++;
		}
		System.out.println("Integer Bits: "+intbits);
		System.out.println("Bits als Float: "+sign+Float.intBitsToFloat(intbits));
		
		hr();
	}
	
	static String fillLeadingZeros(String s)
	{	
		int stringsize=s.length();
		for(int i=0; i<32-stringsize; i++) s=0+s;
		return s;
	}
	
	static String floatSegmentation(String s)
	{
		s=fillLeadingZeros(s);
		String seg=" | ";
		String sp=" ";
	 	return seg+s.substring(0,1)+seg+s.substring(1,5)+sp+s.substring(5,9)+seg+s.substring(9,12)+sp+s.substring(12,16)+sp+s.substring(16,20)+sp+s.substring(20,24)+sp+s.substring(24,28)+sp+s.substring(28,32)+seg;
	}
	
	static String intSegmentation(String s)
	{
		s=fillLeadingZeros(s);
		String seg=" | ";
		String sp=" ";
	 	return seg+s.substring(0,1)+seg+s.substring(1,4)+sp+s.substring(4,8)+sp+s.substring(8,12)+sp+s.substring(12,16)+sp+s.substring(16,20)+sp+s.substring(20,24)+sp+s.substring(24,28)+sp+s.substring(28,32)+seg;

	}
	
	static void hr()
	{
		System.out.println("------------------------------------------------------------------"+"\n");
	}
	
}
