Еще одна лекция от @fmira
https://www.youtube.com/watch?v=YDKI8B59Z50
https://www.youtube.com/watch?v=lch7xcrCIlQ&feature=youtu.be

Здесь информация о том, что принимает принтф. Чтобы увеличить картинку - нажмите на нее.

В каком порядке выполнять эти задачи - дело ваше, но рекомендуем выполнять последовательно, как на блок схеме.


Блок схема подробно описана в записи лекции, начиная с 11-12 минуты.

Пример дерева проекта. У вас состав файлов и папок может отличаться.
Сразу скажу, что этот пример взят не из ft_printf и служит просто для ознакомления. Скачайте и потеребонькайте код руками, изменяйте параметры. Если разберетесь с этим, то поймете, где и как можно использовать эти операции;)
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* bit.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: zkerriga <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/07/05 00:30:28 by zkerriga #+# #+# */
/* Updated: 2020/07/05 00:59:17 by zkerriga ### ########.fr */
/* */
/* ************************************************************************** */
#include <stdio.h>
# define FLG_NONE 0b00000000
# define FLG_ONE 0b00000001
# define FLG_TWO 0b00000010
# define FLG_THREE 0b00000100
# define FLG_FOUR 0b00001000
int main()
{
unsigned char flags;
flags = FLG_NONE;
if (flags & FLG_ONE)
printf("[-] FLG_ONE exist\\n");
else
printf("[+] FLG_ONE not exist\\n");
flags = flags | FLG_ONE;
if (flags & FLG_ONE)
printf("[+] FLG_ONE exist\\n");
else
printf("[-] FLG_ONE not exist\\n");
flags = flags | FLG_TWO;
if ((flags & FLG_ONE) && (flags & FLG_TWO))
printf("[+] FLG_ONE and FLG_TWO exist\\n");
else
printf("[-] FLG_ONE or FLG_TWO not exist\\n");
flags = flags & (~FLG_TWO);
if ((flags & FLG_ONE) && (flags & FLG_TWO))
printf("[-] FLG_ONE and FLG_TWO exist\\n");
else
printf("[+] FLG_ONE or FLG_TWO not exist\\n");
return (0);
}