Согласно названию код:
$a=<int> value;
$b=1<<$a;
echo "\n".$b."\n";
printf("%064b",$b);
$b=$b>>$a;
echo "\n".$b."\n";
printf("%064b",$b);
для значения = 62 отпечатка (как и ожидалось):
4611686018427387904
0100000000000000000000000000000000000000000000000000000000000000
1
0000000000000000000000000000000000000000000000000000000000000001
но для значения = 63 (максимум, но без переполнения) печатает:
-9223372036854775808
1000000000000000000000000000000000000000000000000000000000000000
-1
1111111111111111111111111111111111111111111111111111111111111111
Могу ли я сделать что-то, чтобы сделать >>
обратная сторона <<
во втором случае?
Задача ещё не решена.
Других решений пока нет …