наткнулся вот на такой макрос и не могу окончательно разобраться:
CODE
#define ALIGNTO 4
#define ALIGN(len) ( ((len)+ALIGNTO-1) & ~(ALIGNTO-1) )
#define ALIGN(len) ( ((len)+ALIGNTO-1) & ~(ALIGNTO-1) )
Как я понимаю, результатом ALIGN является число кратное ALIGNTO. Непонятна математика процесса, никак не могу въехать. Если с первой частью выражения более-менее ясно, то вот со второй не очень (отбрасываются младшие битики, но зачем?)
Буду признателен за снятие с ручника

PS. вообще данный метод является ли типичным при выравниваниях по нужной границе?