おせわになります。
MSCOMをしようして通信を行う場合。
送信バッファをBYTE型配列で用意しているのですが、
マイナス値を送信することが出来ません。
どの様にすればよろしいですか?
例えば send_Data(0) as byte
send_Data(0) = -5
MSComm1.Output = Send_Data()
では、出来ませんよね?
自分で2の補数計算しなければいけないのでしょうか?
>では、出来ませんよね?
データ型が byte ですから…わざわざ聞かなくても(^^;)
…オーバーフローですね。
>自分で2の補数計算しなければいけないのでしょうか?
-5 までしかないなら送る時に +5 して受け手が -5 して
も良いでしょうし、逆に -255 〜 255 を送る必要がある
とかだったらどうやっても 1Byte じゃ送れないんじゃない
ですか?
>タイトル: 負数2の補数を送信するには
負数を送るには??
2の補数を求めるには??
…負数2の補数を求めるには??
……補数とは??
何が聞きたいのですか?
説明不足ですみません。
データとして( signed char -127〜128 )を取る値を送りたいのです。
従来は、c言語で書いてあるのですが、通信デバック用にVBで作成しているので、受け手で補正することは考えていません。
質問 :2の補数を求めたいのですが?
VBにC言語のビットを反転する演算子の様な物は存在しますか?
VBはビット演算が無かったような気がしますが。
nビットの2進数Xに対する、2の補数Yは
Y=2^n-X
です。
>VBはビット演算が無かったような気がしますが。
いや、あの…(汗)
And Or Xor 演算子などでは?。
>VBにC言語のビットを反転する演算子の様な物は存在しますか?
そんなすごい話じゃナイと思いますが…(^^;)
[VB6.0]
Private Sub Command1_Click()
Dim send_Data(0) As Byte
send_Data(0) = 5 Xor &HFF
Debug.Print send_Data(0)
End Sub
…あ、まぁ、知ってると思いますけど 0 の時だけ気をつけて下さいね?。
…サンプルコードがいくらでも引っ掛かると思ったら
…論理演算のページばかりで、コードそのものは案外引っ掛からなかったデス…
基本知識だからなのか…使わないからなのか…案外知られてないのかなぁ?
でもまあ、そのままなのもやはり引っ掛かりますね。
http://fukkey.dyndns.org/pins/vb/020425/36118.html
>VBにC言語のビットを反転する演算子の様な物は存在しますか?
たとえばByte型変数 bytBuf のbit反転
MsgBox Not bytBuf
>VBはビット演算が無かったような気がしますが。
ビットシフトと勘違い。m(_ _)m
所で、補数計算 Y=2^8-X これじゃだめと言うことかな。
スピードはちょっと遅いけど。
こういうこと?
Dim i As Integer
Dim b As Byte
i = CInt(Text1.Text) 'この辺は適当に
b = i And &HFF
Debug.Print "i=" & CStr(i) & " b=" & Hex$(b)
ツイート | ![]() |