HOME > プログラミング > 演算 > ビット演算

「<<」「>>」「|」「&」演算 ビット演算

 

ビット表現
日常で使う0から9までの数字で表すのは10進数です。
ビットは0と1のみで表す2進数の数値です。
0から順番に数えていくと、
0⇒1⇒10⇒11⇒100⇒101⇒110⇒111⇒1000⇒1001⇒1010⇒1011⇒1100⇒1101⇒1110⇒1111
と増えていきます。
【参考】1バイトは8ビット、8ビットは8桁の0と1で表します。
ビット値は整数型変数で扱い、"0b"の後に0と1でビット値を書きます。
【参考】"%"の後に0と1でビット値を書く方法もあります。
変数名 = 0b2進数
※構文説明表記の「半角スペース」(space)は省略しています。

ビット表現
dim bit	//整数型変数bitを宣言する
bit = 0b11 //・・・10進数は3
bit = 0b0011	//・・・10進数は3
bit = 0b1111	//・・・10進数は15
//%を使っても同じです
bit = %11 //・・・10進数は3
bit = %0011	//・・・10進数は3
bit = %1111	//・・・10進数は15


 

ビットシフト
桁を左右に指定数ぶん移動します。
シフト演算子は、左にシフトするときは<<、右にシフトするときは>>を使います。
変数名 = 0b2進数 シフト演算子 シフト数

ビットシフト
dim bit	//整数型変数bitを宣言する
bit = 0b00000001 << 3	//左に3桁シフト・・・0b00001000(※1)
bit = 0b00000000 << 3	//左に3桁シフト・・・0b00000000(※2)

bit = 0b11000000 >> 4	//右に4桁シフト・・・0b00001100(※3)
bit = 0b01000000 >> 7	//右に7桁シフト・・・0b00000000(※4)

(※1)10進数で1かあ3ビット左シフトで15。
(※2)どの桁にもビットが立っていない(1がない)ときはシフトしても変わりません。
(※3)10進数で192から4ビット右シフトで12。
(※4)最も左に立っているビットの桁数より多く右シフトすると0になります。


 

ビット演算
同じ位のビットに対して操作します。
変数名 = 0b2進数 ビット演算子 0b2進数

ビット演算
dim bit	//整数型変数bitを宣言する

//論理和(or)	ビット演算子は	|
bit = 0b1100 | 0b0101	//・・・0b1101(※1)

//論理積(and)	ビット演算子は	&
bit = 0b1100 & 0b0101	//・・・0b0100(※2)

//排他的論理和(xor)	ビット演算子は	^
bit = 0b1100 ^ 0b0101	//・・・0b1001(※3)

(※1)各桁どうしが0と0のときだけ0、それ以外は1になります。
(※2)各桁どうしが1と1のときだけ1、それ以外は0になります。
(※3)各桁どうしが同じとき0、異なるとき1になります。


 

進数表現
2進数の表現は以下の2通りあります。
変数名 = 0b1111
変数名 = 1111
16進数の表現は以下のように書きます。
変数名 = 0xF
変数名 = 0xf
変数名 = $F
変数名 = $f
16進数は0から9までの数字と10から15を表すAからFまでの英文字で表現します。
英文字は大文字でも小文字でも区別はありません。


 

MSBとLSB
2進数の桁数を表す方法です。
最上位の桁MSB最下位の桁LSBと表現します。

MSBとLSB
bit = 0b10010110
//MSBは最上位なので1
//LSBは最下位なので0

MSB0ビット目=1(上位から1桁目)
MSB1ビット目=0(上位から2桁目)
MSB2ビット目=0(上位から3桁目)
MSB3ビット目=1(上位から4桁目)
LSB0ビット目=0(下位から1桁目)
LSB1ビット目=1(下位から2桁目)
LSB2ビット目=1(下位から3桁目)
LSB3ビット目=0(下位から4桁目)

当サイトコンテンツの複写・転載・引用は禁止しております。