64-битная система:
$i=2;print ~$i; # 18446744073709551613
32-битная система:
$i=2;print ~$i; # 4294967293
Как я могу сделать $i 32 бита?
$i
Мне нужна переносимая побитовая операция в Perl в любой системе.
Только поразрядно - и результат с 0xffffffff. Это не повлияет на 32-разрядную систему и даст вам 32-разрядные младшие разряды в 64-разрядной системе, что является желаемым ответом.
0xffffffff
Для переносимых побитовых операций в Perl, проверьте Bit :: Vector library в CPAN.
Поддерживает широкий спектр побитовых операций, например:
use Bit::Vector; my $vector = Bit::Vector->new_Dec(32, "2"); # 32-bit vector for the decimal value 2 $vector->Negate($vector);