###前提・実現したいこと
VB.netである16ビット整数の特定のビットを操作したいです。
例:取得値「8」の10ビット目を立てたい。
取得型:integer
取得値:8 ビットで表すと「0000 0000 0000 1000」
操作後:1032 ビットで表すと「0000 0100 0000 1000」
値は取得できています。
あとはビットを操作するだけなのですが・・・
追記:
どのビットを操作するかは変動します。
何ビット目かは値として取得しています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
ベストアンサー
ビット演算子を使うと良いです。
Integer 変数aのnビット目を立てるプログラムは、次のようになります。
x = 1; // xは、1ビット目だけが1で、他のビットは0の値になります。 x << (n - 1); // x を n-1 ビットだけ左にシフトします。 // そうすると、nビット目だけが1で、他のビットは0の値になります。 a = a Or x; // OR演算子を使って、aのnビット目だけを立てます。
また、nビット目だけを下ろす(0にする)には、Not演算子を使ってnビット目だけが0の値を作り、AND演算子でnビット目だけを下ろします。
x = 1; // xは、1ビット目だけが1で、他のビットは0の値になります。 x << (n - 1); // nビット目だけが1で、他のビットは0の値になります。(ここまでは上のプログラムと同じ) x = Not x; // Not演算子で各ビットが反転しますから、nビット目だけが0で、他のビットは1の値になります。 a = a And x; // And演算子を使って、aのnビット目だけをおろします。
投稿2016/04/14 05:20
総合スコア6919
0
何ビット目を立てたり落としたりするにはどうすればいいのかが
思いつきません。
Integer ですと、プラスマイナスになるので
可能であれば、ULong:64ビット、UInteger:32ビット
の使用を検討してください。
'
ヒント:
10進数表記:1,2,4,8,16,32,64,128 ...
16進数表記: はどうなるでしょう
2進数表記: はどうなるでしょう
数値に対して、AND/ORをするとは、どう云う事を行っているのでしょうか?
⇒基礎なので、丁寧に検索すれば、探せます。
PLCをやっている方であれば、理屈は解っているはずです。
投稿2016/04/14 05:08
総合スコア2030
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ビットをOFFにしたいならNotでビット反転させた物とAndで論理積を求め
ビットをONにしたいならOrで論理和を求めれば望む結果が得られませんか?
投稿2016/04/14 04:40
総合スコア2160
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
ビット演算を行いたいとの事でしょうか。
a = 0000 0000 0000 1000
b = 0000 0100 0000 0000
c = a Or b
これで、c = 0000 0100 0000 1000
です。
「VB.net ビット演算」で検索すると、いろいろ出てきます。
公式ドキュメントは、
VB .NET プログラミングリファレンス - 3-4 演算子
こちらです。
PLCとの値のやりとりは、よくわかりません、、、すいません。
投稿2016/04/14 04:35
総合スコア1283
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/14 05:30