#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
С помощью вышеуказанного макроса кто-то может помочь мне в понимании части "(s) -1", почему?
а также макросы вроде:
#define PAGE_ROUND_DOWN(x) (((ULONG_PTR)(x)) & (~(PAGE_SIZE-1)))
#define PAGE_ROUND_UP(x) ( (((ULONG_PTR)(x)) + PAGE_SIZE-1) & (~(PAGE_SIZE-1)) )
Я знаю, что "(~ (PAGE_SIZE-1)))" часть будет обнулять последние пять бит, но кроме этого я не знаю, особенно роль "&" оператор играет.
Спасибо,