История изменений
Исправление xaizek, (текущая версия) :
power(2, n) эквивалентно 1 << n.
Здесь:
tailX = x & (power(2, p - n + 1) - 1);
tailX = x & (power(2, p) - 1);
И кажется проще не сдвигать x, а сдвигать маску и биты из y, тогда не нужно восстанавливать потерянные биты.
Исходная версия xaizek, :
power(2, n) эквивалентно 1 << n.
Здесь:
tailX = x & (power(2, p - n + 1) - 1);
tailX = x & (power(2, p) - 1);
И кажется проще не сдвигать x, а сдвигать маску и биты из y, тогда не нужно восстанавливать потерянные биты.