2進数、8進数、16進数での数値表現
2進数、8進数、16進数での数値の表現を解説します。
2進数
0b を先頭につけると2進数で数値を指定できます。
my $num_bin = 0b1111;
8進数
0を先頭につけると8進数で数値を指定できる。
my $num_oct = 0777;
16進数
0x を先頭につけると16進数で数値を指定できる。
my $num_hex = 0xFFFF;
10進数を2進数、8進数、16進数の出力
2進数、8進数、16進数で出力したい場合は、printf関数でフォーマット指定を行い出力します。%bで2進数、%oで8進数、%xで16進数(小文字)、%Xで16進数(大文字) で出力できます。
# %b で2進数表示で出力 printf("\$num_bin = %b\n", $num_bin); # %o で8進数表示で出力 printf("\$num_oct = %o\n", $num_oct); # %x で16進数表示で出力(小文字) printf("\$num_hex = %x\n", $num_hex); # %X で16進数表示で出力(大文字) printf("\$num_hex = %X\n", $num_hex);
サンプル
2進数、8進数、16進数を使ったサンプルです。
use strict; use warnings; # 0b を先頭につけると2進数で数値を指定できる。 my $num_bin = 0b1111; # 0を先頭につけると8進数で数値を指定できる。 my $num_oct = 0777; # 0x を先頭につけると16進数で数値を指定できる。 my $num_hex = 0xFFFF; # 2進数、8進数、16進数で表現した数値リテラルはprintすると10進数になります。 print "(1)10進数での値\n"; print "\$num_bin = $num_bin\n"; print "\$num_oct = $num_oct\n"; print "\$num_hex = $num_hex\n"; print "\n"; print "(2)それぞれの進数で出力\n"; # %b で2進数表示で出力 printf("\$num_bin = %b\n", $num_bin); # %o で8進数表示で出力 printf("\$num_oct = %o\n", $num_oct); # %x で16進数表示で出力(小文字) printf("\$num_hex = %x\n", $num_hex); # %X で16進数表示で出力(大文字) printf("\$num_hex = %X\n", $num_hex);