Да. Вам нужно подойти к числу n так, чтобы n mod 255
равнялось originalNumber - 1
. Самый простой способ сделать это - добавить 255 к вашему номеру. Это может быть выполнено 255 приложениями оператора ++ или более разумно путем сдвига, пока не потребуются добавления.
Редактировать как запрошено:
unsigned char c = 77;
unsigned char i = 0;
if(c < 128)
{
i = c;
c = c << 1;
}
while(++i)
{
++c;
}
// c == 76
Я понимаю, что для этого требуется <"оператор", но давайте будем честными, если компьютер может переключаться, он может меньше, чем. В противном случае эта оптимизация невозможна. Имейте в виду, что это также сместит максимум 1 раз, что все же лучше, чем ничего для чисел в диапазоне 3-127. Чтобы сдвинуться дальше, нам понадобится простой старый оператор + для нашего счетчика i. Хотя ... я не знаю ЛЮБОГО компьютера, который не может добавить. </p>