2進数の0か1かの判定 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 lever  (学生) 投稿日時 2009/5/19 08:05:48
太郎冠者さん、ヴァンさん、返信ありがとうございます。

受信したデータは、送信した機器から見れば2進数を送っているはずです。(送信機器:三●電機PLC)
それと下位ビット先です。

受信したデータは
 Dim strData As String = Convert.ToString(ivalue, 2).ToUpper()
というかんじで2進数に変換しております。

早速2通りとも試してみたいと思います。これからもアドバイスをよろしくお願いします。
投稿者 ヴァン  (社会人) 投稿日時 2009/5/19 05:06:54
シリアル受信との事ですが、lsbファーストでしょうか?
また、データは文字列でしょうか?

シリアルで受信したデータなので文字列と仮定しちゃいますね。
左側からなら、n番目(ビットの位置)を SubString で1文字取り出せば良いと思います。
右側からなら、長さ-1からn番目を SubString で1文字取り出せば良いと思います。
投稿者 太郎冠者  (社会人) 投稿日時 2009/5/18 10:59:39
あれ、ずれてる。
× 0000001000000000
○ 0000000100000000
投稿者 太郎冠者  (社会人) 投稿日時 2009/5/18 10:58:08
9bit目ってどっちから?
右からなら
0000001000000000
でマスク(AND演算)すればいいよ。
マスクした結果(0か1)がそのまま「9Bitめが0か1か」になるから。
逆なら「1」の場所をずらしてね。

詳しく知りたかったら「ビット演算」でググってみてよ。
投稿者 lever  (学生) 投稿日時 2009/5/18 09:53:34
シリアル通信で2進数を16Bit受信して任意のBitが0か1かの判定文を作りたいのですが、
ど素人なもので受信ができても判定の仕方がわかりません。

「0011010100000000」という数値が受信されたとして、9Bitめが0か1かの判定結果によって
ある動作をするみたいな感じです。

もしよろしかったら教えてください、お願いします。