Если двоичное число нечетное, последняя (наименее значимая) цифра должна быть 1, поэтому вычитание 1 просто меняет последнюю цифру с 1 на 0 (что, что важно, делает число четным).
Если двоичное число четное, последняя цифра должна быть 0, а деление на ноль может быть достигнуто простым удалением последнего 0. (Как и в базовой десятке, число 10 можно разделить на десять, убрав последние 0, оставив 1.)
Таким образом, число шагов составляет два шага для каждой 1 цифры и один шаг для каждого0 цифр - минус 1, потому что когда вы добираетесь до последних 0, вы больше не делите на 2, а просто останавливаетесь.
Вот простое решение JavaScript (вместо Java):
let n = '11100';
n.length + n.replace(/0/g, '').length - 1;
Если немного потрудиться, это может правильно справиться с ведущими нулями '0011100', если это необходимо.