Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2016, 17:05   #1
Paterul
Новичок
Джуниор
 
Регистрация: 21.05.2016
Сообщений: 3
По умолчанию Написать утилиту составления числа по трем функциям(C)

формат binary16 стандарта IEEE 754-2008/ В прототипах функций, приведённых ниже, обозначается как fp16_t:

утилита составления числа
Код:
/*
 * Возвращает число со знаком sign, экспонентой exp и мантиссой mant.
 * Подразумевается, что составляющие числа корректны и не требуют проверки
 */
fp16_t fp16_make(int sign, int exp, int mant);
Код:
int fp16_exp(fp16_t f)
{
    int ret = 0;
    __asm(
        "and $0x7C00, %1;"
        "shr $0xA, %1;"
        "or  %1, %%ax"
        : "+a" (ret)
        : "r" (f));
    return ret;
}
int fp16_mant(fp16_t f)
{
    int ret = 0;
    __asm(
        "and $0x03FF, %1;"
        "or  %1, %%ax"
        : "+a" (ret)
        : "r" (f));
    return ret;
} 
int fp16_sign(fp16_t f)
{
    int sign = 0;
    __asm(
        "shl $1, %1;" // CF = f << 1;
        "adc $0, %0" // sign += CF;
        : "+r" (sign)
        : "r" (f));
    return sign;
}
Функции реализуются с помощью языка C и конструкции asm компилятора gcc.

Последний раз редактировалось Paterul; 21.05.2016 в 17:12.
Paterul вне форума Ответить с цитированием
Старый 21.05.2016, 20:11   #2
Paterul
Новичок
Джуниор
 
Регистрация: 21.05.2016
Сообщений: 3
По умолчанию

Помогите, пожалуйста. Подкиньте хотя бы какую-нибудь идею
Paterul вне форума Ответить с цитированием
Старый 23.05.2016, 22:14   #3
Paterul
Новичок
Джуниор
 
Регистрация: 21.05.2016
Сообщений: 3
По умолчанию

Код:
uint16_t fp16_make(int sign, int expt, int mant) {
    uint16_t f = 0;
 
    f = sign << 15;
    f = (f | expt) << 10;
    f = f | mant;
 
    f = f & 0xffff;
 
    return f;
}
Подойдет ли это к моей программе?
Paterul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скоплилировать утилиту из исходников kos1nus Фриланс 0 18.06.2015 14:23
Где найти утилиту bdecfg32 в builder 6? fs444 C++ Builder 4 03.09.2009 14:48
Ищу утилиту txt -> hdf5 формат Isak Свободное общение 1 14.05.2009 18:43
Паскаль. найти все числа кратные трем и посчитать их количество __k1ll3r__ Помощь студентам 6 02.04.2008 16:37
напишите мне утилиту за денежку Alexey Fro Общие вопросы C/C++ 1 13.01.2007 08:00