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);
Perlゼミ

