Язык программирования С, лабораторная работа 5, операции

Инструментарий

Для подготовки текста решений задач следует использовать произвольный текстовый редактор, желательно - с подсветкой синтаксиса (geany, редактор файлового менеджера mc и т.д.).

Для компиляции - компилятор gcc.

Задания

  1. Даны целочисленные значения X и Y. Создать программу, определяющую сколько потребуется последовательных операций вида X=X+Y и X=X-Y до момента перехода через границу типа переменной X. Рассмотреть все варианты сочетаний типов signed char и unsigned char для переменных X и Y.
  2. Дано натуральное значение X типа unsigned char. Определить количество установленных в единицу битов. Например, число 9 (1001 в двоичном представлении) содержит два установленных в единицу бита.
  3. Дано натуральное значение X типа unsigned char. Определить, имеется ли в числе два подряд идущих единичных бита и указать все позиции таких наборов. Например, для числа 14 (1110 в двоичном представлении) получим два набора с позициями 3-2 и 2-1.

Для ввода-вывода данных использовать функции scanf, printf.

При необходимости использовать математические функции из библиотек stdlib.h и math.h.

При использовании функций из math.h следует указывать компилятору подключать при сборке программы динамическую библиотеку libm.so, содержащую код математических функций. Это обеспечивает опция -lm в командной строке компилятора. Например: gcc my.c -o my.run -lm скомпилирует программу my.c в исполняемый файл my.run, подключив библиотеку libm.so.

Для поиска нужной функции использовать утилиту man, которая обеспечивает доступ из консоли к системе помощи linux, в том числе - к описаниям системных библиотек и функций на языке С. Например man stdlib.h возвратит описание содержимого библиотеки stdlib, в том числе - заголовки всех функций библиотеки. Найдя требуемую функцию, ее описание можно получить, например, так: man abs, где abs - имя функции.