Я пытался решить эту проблему некоторое время, но не смог с помощью только целочисленных арифметических и побитовых операторов. Тем не менее, я думаю, что это возможно, и это должно быть довольно легко. Чего мне не хватает?
Проблема: получить целочисленное значение произвольной длины (это не имеет отношения к проблеме) с X младшими значащими битами, установленными в 1, а остальные в 0. Например, с учетом числа 31, мне нужно получить целочисленное значение, равное 0x7FFFFFFF (31 младший бит равен 1, а остальные нули).
Конечно, использование цикла ИЛИ - смещение сдвинутой 1 до целого X раз сделает эту работу. Но это не то решение, которое я ищу. Это должно быть больше в направлении (X << Y - 1)
, таким образом, без использования петель.