0

Мне нужно написать функцию, которая добавляет два числа, но у нас есть процессор, который не поддерживает переменный тип Float !!Добавление двух чисел без переменной float

Таким образом, для представления дробей используется длинное целое число, представленное на самом деле с использованием 4B-32bit.

Определим длинные биты следующим образом:

СЗБ отмечен S -signed.

8 бит после отмеченных E - экспоненциально.

Оставшиеся 23 бита обозначены М-мантисса.

Следующая формула представляет собой долю в длинном:

(Е^2) (М) (S^-1).

и мне нужно написать функцию:

беззнаковой длинной надстройки (беззнаковое длинное float1, беззнаковые долго float2)

что получает две больших значений (которые на самом деле фракция), добавить их и вернуть ответ долго.

Я попытался сделать что-то подобное, но застрял.

неподписанных долгое добавить (без знака длиной float1, неподписанные долго float2) {

char E1=float1>>23, E2=float2>>23, E3; 

. . . .

спасибо :)

+0

какой язык/enviriorment? –

ответ

0

перефразировать sui's answer, вот некоторые псевдо-код.

while exponent(f1) > exponent(f2): 
    increment exponent(f2) 
    shiftleft mantissa(f2) 

while exponent(f2) > exponent(f1): 
    increment exponent(f1) 
    shiftleft mantissa(f1) 

add mantissa(f1) to mantissa(f2) 
adjust exponent 
calculate sign 
Смежные вопросы