Floating Point simulator version 1.0, Release notes Software architecture The software consists of two classes; attributes and methods are listed in the UML diagram (./UML.jpg). Description of the algorithm At the start of the program you need to choose the language (english or italian) Once you choose the language there's another menu where you can choose to use the Binary-Decimal from floating point to fixed point converter or Decimal-Binary from fixed point to floating point converter. The Binary-Decimal converter receives from keyboard input a string of 0 and 1 bit characters; the first bit will specify the sign (1 negative - 0 positive); the exponent is represented from the second to the ninth bit, it tells how many positions the point is moved and the direction of its shift (e.g.: exp=129--> mantissa 1.11011=> 111.011 or exp=125-->mantissa 1.11011=> 0.0111011). The number (1,mantissa)*2^(exp-127) is the binary number in floating point that has to be converted in decimal fixed point. The Decimal-Binary converter receives from keyboard input a signed float (rational number), the number is divided into integer part and fractional part; both of them are separately converted to binary, respectively using the iterated division method and the iterated multiplication method. So, at the end of the process we get an integer binary part, a fractional binary part and the number sign. The algorithm then switches to the floating point conversion: it checks whether the exponent overflows, if so the program terminates; otherwise: it prepends a 1 or 0 bit to the output string according to the sign; then it calculates the exponent, by adding 127 to the number of positions whereby the point has been shifted, and appends this to the binary output string; finally, it appends the mantissa, which is the fractional part after the point shift. Programming techniques In the Binary-Decimal class: The "scomposizione" method is useful to divide the string received in "segno", "esponente" and "mantissa" using the "set_segno", "set_esponente" and "set_mantissa" methods. The "trova_esponente" function is used in order to find the decimal value of the exponent. The "sposta_virgola" function is used to shift the point by (exponent-127) positions. The "conversione" method uses the "scomposizione" method and the "sposta_virgola" function, it calculates the decimal value of the number received from the keyboard when it has a valid value, otherwise it will show a message on the screen that gives some information about the inserted value. In the Decimal-Binary class: The class is composed of the private attributes and methods needed to the number conversion and of the only public methods convert() and setK(). The constructor initializes the string representing the number to "" (null). Then it invokes the setK() function that changes the variable k, which represents the number to be converted. The convert() function is then called, that returns either a binary floating point number, if it matches the range and data type, or an error message otherwise. The binary number is composed of the concatenation of the strings returned by the functions sign(), exponent() and mantix(). Tests The program has been tested on two of the three main operating system: Unix/Linux and MS Windows; the g++ compiler and the application "dev c++" were respectively used to compile the program. Ideas for future improvement 1.Extend the range of the Binary-Decimal converter. 2.Add other number systems. 3.Add other languages. 4.Add a graphics interface.