Смешанное сложение переменных типа CLINT и USHORT
Синтаксис: int uadd_l (CLINT a, USHORT b, CLINT c);
Вход: a, b (слагаемые)
Выход: c (сумма)
Возврат: E_CLINT_OK, если все в порядке
E_CLINT_OFL в случае переполнения
Функции вычитания
Вычитание
Синтаксис int sub_l (CLINT a, CLINT b, CLINT с);
Вход: a (уменьшаемое),b (вычитаемое)
Выход: с (разность)
Возврат: E_CLINT_OK, если все в порядке
E_CLINT_UFL в случае потери значащих разрядов
Декремент (уменьшение CLINT-обьекта на 1)
Синтаксис: int dec_l (CLINT a);
Вход: а (уменьшаемое )
Выход: a (разность сумма)
Возврат: E_CLINT_OK, если все в порядке
E_CLINT_UFL в случае потри значащих разрядов
Вычитание числа типа USHORT из числа типа CLINT
Синтаксис: int usub_l (CLINT a, USHORT b, CLINT c);
Вход: a (уменьшаемое), b (вычитаемое)
Выход: c (разность)
Возврат: E_CLINT_OK, если все в порядке
E_CLINT_UFL в случае потери значащих разрядов
Функции умножения
Умножение
Синтаксис: int mul_l (CLINT a, CUNT b, CLINT c);
Вход: a, b (сомножители)
Выход: c(произведение)
Возврат: E_CLINT_OK, если все в порядке
E_CLlNT_OFL в случае переполнения
Возведение в квадрат
Синтаксис: inl sqr_l (CLINT a, CLINT c);
Вход: a (операнд)
Выход: c (квадрат)
Возврат: E_CLINT_OK, если все в порядке
E_CLINT_OFL в случае переполнения
Умножение CLINT- объекта на число типа USHORT
Синтаксис: inl umul_l (CLINT a, USHORT b, CLINT c);
Вход: a, b (сомножители)
Выход: c (произведение)
Возврат: E_CLINT_OK, если все в порядке
E_CLINT_OFL в случае переполнения
Функции деления
Деление
Синтаксис: inl div_l (CLINT a, CLINT b, CLINT q, CLINT tem);
Вход: a (делимое), b (делитель)
Выход: q (частное), tem (остаток)
Возврат: E_CLINT_OK, если все в порядке
E_CLINT_DBZ в случае деления на 0
Деление переменной типа CLINT на переменную типа USHORT
Синтаксис: int udiv_l (CLINT a, USHORT b, CLINT q,CLINT r);
Вход: a (делимое), b (делитель)
Выход: q (частное), r (остаток)
Возврат: E_CLINT_OK, если все в порядке E_CLINT_DBZ в случае деления на 0
Функции модульного деления
Модульное деление( вычет по модулю )
Синтаксис: int mod_l (CLINT a, CLINT b, CLINT r);
Вход: a (делимое), b (делитель или модуль)
Выход: r (остаток)
Возврат: E_CLINT_OK, если все в порядке E_CLINT_D8Z в случае деления на 0
Модульное деление на степень двойки (вычет по модулю 2k)
Синтаксис: int mod2_l (CLINT a, ULONG b, CLINT r);
Вход: a (делимое),b (показатель степени делителя или модуля)
Выход: r (остаток)
Модульное деление переменной типа CLINT на переменную типа USHORT( вычет по модулю )
Синтаксис: USHORT umod_l (CLINT a, USHORT b);
Вход: a (делимое), b (делитель или модуль)
Возврат: неотрицательный остаток, если все в порядке 0xFFFF в случае деления на 0
Пример использования основных арифметических операций
#pragma hdrstop
#include <FLINT.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define ClintToStr xclint2str_l // Переопределение функции xclint2str_l
int main(int argc, char* argv[])
{
CLINT a,b,c; // Обьявление объектов CLINT
// Инициализаация объектов CLINT строкой 16-х цифр
char *sa =new char;sa="104576356756674567845764567456757645778467837638";
str2clint_l (a,sa,10);//Инициализация строкой
char *sb =new char;sb="1814595567567567567567635673567567567567876867897";
str2clint_l (b,sb,10);//Инициализация строкой
printf("a=%s\n",ClintToStr(a,10,1));
printf("b=%s\n",ClintToStr(b,10,1));
//Сложение
int Err= add_l (a,b,c);
printf("Err= %d c=a+b= %s\n",Err,ClintToStr(c,10,1));
// Инкремент
Err= inc_l ( a);
printf("Err= %d a=a+1= %s\n",Err,ClintToStr(a,10,1));
// Смешанное сложение переменных типа CLINT и USHORT
USHORT US=1956; printf("US= %d\n",US);
Err= uadd_l ( a,US, c);
printf("Err= %d a+US= %s\n",Err,ClintToStr(c,10,1));
//Вычитание
Err= sub_l (b,a,c);
printf("Err= %d c=b-a= %s\n",Err,ClintToStr(c,10,1));
// Денкремент
Err= dec_l ( c);
printf("Err= %d c=c-1= %s\n",Err,ClintToStr(c,10,1));
//Вычитание числа типа USHORT из числа типа CLINT
Err= usub_l ( c, US, a);
printf("Err= %d a=c-US= %s\n",Err,ClintToStr(a,10,1));
//Yмножение
Err= mul_l ( a, b, c);
printf("Err= %d c=a*b= %s\n",Err,ClintToStr(c,10,1));
// Возведение в квадрат числа a
Err= sqr_l ( a, c);
printf("Err= %d b=sql(a)= %s\n",Err,ClintToStr(b,10,1));
// Умножение CLINT- объекта на число типа USHORT
Err=umul_l (a, US, c);
printf("Err= %d c=a*US= %s\n",Err,ClintToStr(c,10,1));
//Деление
CLINT q, tem;
Err= div_l (b, a, q, tem );
printf("Err= %d q=b/a= %s\n",Err,ClintToStr(q,10,1));
printf(" tem= %s\n",ClintToStr(tem,10,1));
// Модульное деление ( вычет по модулю )
mod_l (b, a, tem);
printf(" Err= %d tem=b mod a= %s\n",Err,ClintToStr(tem,10,1));
// Модульное деление на степень двойки (вычет по модулю 2k)
Err= mod2_l ( a, 5, q);
printf(" Err= %d q=a mod (2*2*2*2*2) = %s\n",Err,ClintToStr(q,10,1));
//Модульное деление переменной типа CLINT на переменную типа USHORT
//( вычет по модулю )
US=pow(2,5) ;
USHORT F= umod_l (a, US);
printf(" F=a mod (2*2*2*2*2) = %d\n",F);
getch();
return 0; }
Рисунок Основные арифметические операции
Задание
№ п.п | Инициализация | Преобразование переменных , дополнительные операции | Арифметические операции | Поразрядные операции |
Строкой 16-х цифр | Перестановка значений двух CLlNT-объектов | Сложение,деление ,модульное деление на степень двойки | Сдвиг влево на один бит | |
Числом типа ULONG | Копирование CLINT | Смешанное сложение, возведение в квадрат, умножение | Сдвиг вправо на один бит | |
Вектором байт | Перестановка значений двух CLlNT-объектов | Инкремент, модульное деление на степень двойки, вычитание числа типа USHORT из числа типа CLINT | Поразрядное “И” | |
Строкой 2-х цифр | Преобр. CLINT-объекта в строку символов | Вычитание,деление, модульное деление переменной типа CLINT на переменную типа USHORT | Поразрядное “ИЛИ” | |
Строкой 8-х цифр | Перестановка значений двух CLlNT-объектов | Смешанное сложение переменных типа CLINT и USHORT, умножение, декремент | Поразрядное “исключающее ИЛИ” | |
Строкой 10-х цифр | Преобр. CLINT-объекта в строку символов | Вычитание числа типа USHORT из числа типа CLINT, деление переменной типа CLINT на переменную типа USHORT, вычитание | Проверка и задание значения бита | |
Строкой 2-х цифр | Перестановка значений двух CLlNT-объектов | Сложение, умножение, модульное деление | Проверка и обнуление значения бита | |
Числом типа ULONG | Копирование CLINT | Инкремент,деление, возведение в квадрат | Сдвиг влево на один бит | |
Строкой 8-х цифр | Копирование CLINT | Умножение CLINT- объекта на число типа USHORT, возведение в квадрат, модульное деление переменной типа CLINT на переменную типа USHORT | Сдвиг вправо на один бит | |
Строкой 16-х цифр | Перестановка значений двух CLlNT-объектов | Сложение, деление, модульное деление,деление переменной типа CLINT на переменную типа USHORT | Поразрядное “И” | |
Вектором байт | Копирование CLINT | возведение в квадрат, модульное деление на степень двойки | Поразрядное “ИЛИ” | |
Строкой 2-х цифр | Число значащих двоичных разрядов CLINT-объекта | Умножение, декремент,модульное деление | Проверка двоичного разряда | |
Строкой 10-х цифр | Копирование CLINT | Смешанное сложение переменных типа CLINT и USHORT, умножение CLINT- объекта на число типа USHORT, модульное деление на степень двойки | Поразрядное “И” | |
Строкой 16-х цифр | Преобр. CLINT-объекта в строку символов | Вычитание, умножение, модульное деление | Проверка и задание значения бита | |
Числом типа ULONG | Перестановка значений двух CLlNT-объектов | Инкремент, деление, декремент | Поразрядное “ИЛИ” | |
Строкой 8-х цифр | Копирование CLINT | Сложение, умножение, модульное деление переменной типа CLINT на переменную типа USHORT | Сдвиг влево на один бит | |
Строкой 2-х цифр | Число значащих двоичных разрядов CLINT-объекта | Вычитание числа типа USHORT из числа типа CLINT, декремент, умножение | Сдвиг вправо на один бит | |
Строкой 10-х цифр | Перестановка значений двух CLlNT-объектов | Сложение, , модульное деление,смешанное сложение переменных типа CLINT и USHORT | Поразрядное “исключающее ИЛИ” | |
Числом типа ULONG | Копирование CLINT | Вычитание, декремент,умножение | Проверка и задание значения бита | |
Вектором байт | Преобр. CLINT-объекта в байтовый вектор | Сложение, возведение в квадрат,модульное деление переменной типа CLINT на переменную типа USHORT | Проверка и обнуление значения бита |
-
- Отчет должен содержать содержать:
1. Hаименование и номер лабораторной работы;
2. Условие задачи;
3. Распечатка листинга программы;
4. Распечатка результатов выполнения задачи;
5. Выводы по результатам выполнения задач, анализ возможностей библиотеки “FLINT\C” .