1. А почему не использовать конверсию UDINT_BOOL_TO BOOL_TO_UDINT или нужен побитовый? Битовые операции тестировали много людей, в том числе и я.
2. Можно с конверсией. Или нужны побитовые?
3. Таких требований по этому не было. Имеет смысл написать.

Размер стека функции рассчитывается с учетом результатов промежуточных вычислений