Если это не гипотетический вопрос, т. Е. Найти быстрый алгоритм для этого, то, пожалуйста, проигнорируйте этот ответ. Правильный способ (как уже упоминалось) - сделать (somelong / 10) * 10 + newvalue
Более быстрый (гипотетический) способ, вероятно, состоит в том, чтобы иметь некоторый двумерный массив значений корректировки.
int [] [] setting = new int [16] [10];
где первый индекс массива представляет то, что текущее значение имеет 0x0F (последние 4 бита)
второй индекс массива будет тем, что вы хотите, чтобы новый номер был
значение является корректировкой переменной
так что код будет
newLong = somelong + настройка [somelong & 0x0F] [what_you_want_the_new_digit];
так что нет умножения или деления
в качестве примера предположим, что введенный номер равен 22, и вы хотите, чтобы он был 26
26 - 011010, поэтому 26 & 0x0F - это младшие 4 бита 1010, что составляет 10
настройка [10] [6] = 4 (вы предварительно рассчитали, что это 4)
чтобы у вас было 22 + 4 = 26
очевидно, индекс 10 совпадает с индексом 0, индекс 11, совпадает с индексом 1 и т. Д. И т. Д.