Как работает округление числа вверх до кратного?
Вычитал в одной статье технику, которая позволяет округлить число X в большую сторону так, чтобы оно было кратно Y.
int roundup(int x, int y) {
return ((x+y-1) & ~(y-1));
}
int main() {
int x = 1020; // number to round up
x = roundup(x, 512);
return 0;
}
Этот пример кода округляет X до 1024, однако нигде не объясняется что происходит в функции roundup, поэтому прошу у вас объяснения по этому вопросу.