[目次へ][前へ][次へ][表紙へ]
 2進数

 1.2進数

 私達が普段使っている数は、10進数です。1の位、10の位、100の位……、からなっています。これは10の0乗の位、10の1乗の位、10の2乗の位……、からなっているとも言えます。
 それぞれの位には0から9までの値が書かれます。例えば、4126という数字は、
  4 * 10の3乗 + 1 * 10の2乗 + 2 * 10の1乗 + 6 * 10の0乗
 と表されます。
 これに対してそれぞれの位が2のべき乗で表される数を2進数と言います。例えば、1011という2進数は、
  1 * 2の3乗 + 0 * 2の2乗 + 1 * 2の1乗 + 1 * 2の0乗
 と表されます。10進数でいうところの11です。2進数では、それぞれの位には0か1しか書けません。各々の位は「ビット」と呼ばれます。「第nビット」あるいは「nビット目」といえば、「2のn乗の位」を指します。

 HSPでは、2進数の頭に%(または0b)をつけます。

 2.論理積、論理和

 if文で、条件式同士の論理積、論理和について説明しましたが、それとは別に、数字同士の論理積、論理和を計算することができます。

	x & y

 という計算は、xとyそれぞれを2進数で表した数に対し、各ビットごとに論理積を行なった値を求めます。この場合1が真、0が偽に対応します。つまり、

	1 & 1 = 1
	1 & 0 = 0
	0 & 1 = 0
	0 & 0 = 0

 となります。
 xが156、yが87であれば、2進数で書くとxは%10011100、yは%1010111です。両方とも1のビットだけが1になります。

	%10011100 ← x
	%01010111 ← y
	---------
	%00010100 ← x & y

 これを10進数で書くと20です。よって156 & 87 = 20です。

 論理和の場合は

	1 | 1 = 1
	1 | 0 = 1
	0 | 1 = 1
	0 | 0 = 0

 つまり、どちらか一方でも1の箇所が1になります。

	%10011100 ← x
	%01010111 ← y
	---------
	%11011111 ← x | y

 これを10進数で書くと223です。よって156 | 87 = 223です。

補足
・バイト
 コンピュータは、絵も音も文章も、すべて数字として記憶しています。しかもそれは10進数ではありません。2進数です。つまり、1と0の膨大な量の羅列です。しかしそれでは扱いにくいので、8ビットを一まとめとした「バイト」という単位で扱います。1バイトは0(= %00000000)から255(= %11111111)までです。

[目次へ][前へ][次へ][表紙へ] inserted by FC2 system