# Lab 7 Name: Tilak Reddy Roll No.: CS22B047 --- ## Question 1 ### Step 1 - convert inegral part to binary 0 in decimal = 0 in binary ### Step 2 - convert fractional part to binary 0.1 x 2 = 0.2, integral part = 0 0.2 x 2 = 0.4, integral part = 0 0.4 x 2 = 0.8, integral part = 0 0.8 x 2 = 1.6, integral part = 1 0.6 x 2 = 1.2, integral part = 1 . . . combine all intergral parts to get binary: .1 in decimal = .00011.... in binary ### Step 3 - combine both parts 0.1 in decimal = 0.00011.... in binary --- ## Question 2 ### Step 1 - Find sign bit sign bit = 0 ### Step 2 - write 0.1 in base 2 sintific notation 0.1 / 2<sup>-1</sup> = 0.2 0.1 / 2<sup>-2</sup> = 0.4 0.1 / 2<sup>-3</sup>= 0.8 __0.1 / 2<sup>-4</sup> = 1.6__ 0.1 in base 2 scientific = 1.6 x 2<sup>-4</sup> sign = 0 mantesa = 6 exponent = -4 ### Step 3 - convert 0.6 to binary mantesa has 23 bits in IEEE notation. Therefore, 0.6 in binary can be approximated up to 23 bits. Python script to convert 0.6 to binary ```python= fraction = 0.6 integer = 0 for i in range(23): fraction *= 2; integer =int(fraction); print(integer,end="") fraction -= integer ``` 0.6 in binary approximated to 23 bits = 0.10011001100110011001100 matesa = 10011001100110011001100 ### Step 4 - convert -4 to binary Exponent has bais of 127 in IEEE format. therefore, -4 is represented as -4 + 127 = 123 123 in binary = 01111011 exponent = 01111011 ### Step 5 - combine sign, mantesa and exponent 0.1 in binary = 0 01111011 10011001100110011001100 --- ## Question 3 sign = 0 0.2 = 1.6 x 2<sup>-3</sup> _mantesa will be same as in previous question_ exponent = -3+127 = 124 exponent in binary = 01111100 0.2 in binary = 0 01111100 10011001100110011001100 python script to convert IEEE to decimal ```python= mantesa = "10011001100110011001100" i=-1; decimal = 1; exponent = 3; for bit in mantesa: decimal += int(bit)*pow(2,i) i-=1 for i in range(exponent): decimal *= 0.5; print(decimal) ``` output - 0.19999998807907104 --- ## Question 4 #### Floating Point Representation: - Register 1: Integer part (3 digits) - Register 2: Fractional part (3 digits) #### Addition Algorithm: 1. Align the decimal points by padding with zeros if necessary. 2. Add the fractional parts first. If the sum exceeds 999 (our maximum value for the fractional part), carry over to the integer part. 3. Add the integer parts, including any carry from the fractional part addition. #### Representation: - 5.391 is represented as: - Register 1: 005 - Register 2: 391 - 3.012 is represented as: - Register 1: 003 - Register 2: 012 #### Addition: 1. Align the decimal points: - 005.391 - +003.012 2. Add the fractional parts: 391 + 012 = 403 - Carry: 1 (as 403 > 999) 3. Add the integer parts with the carry: 5 + 3 + carry = 9 #### Result: - Register 1: 009 - Register 2: 403 --- ## Question 5 ```assembley= .data number1: .float 3.14 # Example floating-point number 1 number2: .float 2.71 # Example floating-point number 2 result: .float 0 # Initialize the result variable .text .global _start _start: # Load the addresses of the numbers into registers la t0, number1 la t1, number2 la t2, result # Load the floating-point numbers into floating-point registers flw fa0, 0(t0) # Load number1 into fa0 flw fa1, 0(t1) # Load number2 into fa1 # Perform addition fadd.s fa2, fa0, fa1 # Add number1 and number2, result in fa2 # Store the result back into memory fsw fa2, 0(t2) # Store the result at the address pointed to by t2 # Exit the program li a7, 10 # Exit syscall number ecall # Invoke syscall ```