int non_smaller_int_divisible_by_16(int x)
{
return (x + 15) & ~15;
}
Поскольку 16 - это степень двойки, вы можете использовать двоичную маскировку - прибавьте 15, чтобы мы получили следующее наивысшее кратное, и замаскируйте битовой инверсией 15, чтобы очистить нижние биты.
Редактировать:
Непонятно, что вы хотите получить с отрицательными числами - и ваш, и мой код будут округляться до более положительных значений (т. Е. Отрицательные числа будут уменьшаться).Если отрицательные значения не имеют смысла в вашей программе, было бы лучше использовать тип без знака.
Наконец, вам может быть интересно взглянуть на Bit Twiddling Hacks , которыйбольшая коллекция некоторых действительно умных (хотя часто чрезвычайно неясных) трюков в этом направлении.