Visual Basicでビット演算

FOCAS2でR領域の読み書きをするために、VBでビット演算をする必要がありました。いきなり本物のプログラムにビット演算のプログラムを埋め込むのは大変なので、検証用にビット演算ツールを作ってみました。

VBでビット演算をするには、16進数で論理演算をします。

ビットを立てる→立てたいビットだけ1のマスクとORを取る

ビットを消す→消したいビットだけ0のマスクとANDを取る

 

元データの2進数、マスクの2進数をそれぞれ10進数と16進数に変換する機能、16進数でANDとORを計算し、計算結果を10進数と2進数に変換する機能を作りました。いくつか試してみたところ、ちゃんと出来てるようなので、これを参考に本物のプログラムにビット演算を入れました。

f:id:matsumoto_keitaro:20200310152056p:plain

ビット演算ツール

プログラムの主要部分

2進数→10進数と16進数に変換してテキストボックスに表示

TextBox9.Text = TextBox1.Text * 128 + TextBox2.Text * 64 + TextBox3.Text * 32 + TextBox4.Text * 16 + TextBox5.Text * 8 + TextBox6.Text * 4 + TextBox7.Text * 2 + TextBox8.Text * 1
TextBox10.Text = Hex(TextBox9.Text)

元データとマスクのANDとORを取った結果をテキストボックスに表示

TextBox29.Text = "&H" + TextBox10.Text Or "&H" + TextBox20.Text
TextBox30.Text = "&H" + TextBox10.Text And "&H" + TextBox20.Text
TextBox21.Text = Convert.ToString(Integer.Parse(TextBox29.Text), 2)
TextBox22.Text = Convert.ToString(Integer.Parse(TextBox30.Text), 2)