「Mastering Perl/Chapter 16/Bit Operators/単項NOT,~」より:
単項 NOT 演算子 (補数演算子と呼ばれることもあります) ~ は、アーキテクチャの整数サイズに基づいて、値のビットごとの否定または 1 の補数を返します。
次のスクリプトが 2 つの異なる値を出力するのはなぜですか?
#!/usr/local/bin/perl
use warnings;
use 5.012;
use Config;
my $int_size = $Config{intsize} * 8;
my $value = 0b1111_1111;
my $complement = ~ $value;
say length sprintf "%${int_size}b", $value;
say length sprintf "%${int_size}b", $complement;
出力:
32
64