VB6 MSCOMで 負数2の補数を送信するには


すえ太朗  2005-01-18 01:03:15  No: 118943

おせわになります。
MSCOMをしようして通信を行う場合。
送信バッファをBYTE型配列で用意しているのですが、
マイナス値を送信することが出来ません。
どの様にすればよろしいですか?
例えば  send_Data(0) as byte
        send_Data(0) = -5
        MSComm1.Output = Send_Data()
では、出来ませんよね?
自分で2の補数計算しなければいけないのでしょうか?


特攻隊長まるるう  2005-01-18 01:26:55  No: 118944

>では、出来ませんよね?
データ型が byte ですから…わざわざ聞かなくても(^^;)
…オーバーフローですね。
>自分で2の補数計算しなければいけないのでしょうか?
-5 までしかないなら送る時に +5 して受け手が -5 して
も良いでしょうし、逆に -255 〜 255 を送る必要がある
とかだったらどうやっても 1Byte じゃ送れないんじゃない
ですか?
>タイトル: 負数2の補数を送信するには
負数を送るには??
2の補数を求めるには??
…負数2の補数を求めるには??
……補数とは??
何が聞きたいのですか?


すえ太朗  2005-01-18 01:51:44  No: 118945

説明不足ですみません。
データとして( signed char -127〜128 )を取る値を送りたいのです。
従来は、c言語で書いてあるのですが、通信デバック用にVBで作成しているので、受け手で補正することは考えていません。

質問  :2の補数を求めたいのですが?
VBにC言語のビットを反転する演算子の様な物は存在しますか?


ねろ  2005-01-18 02:31:02  No: 118946

VBはビット演算が無かったような気がしますが。
nビットの2進数Xに対する、2の補数Yは
Y=2^n-X
です。


特攻隊長まるるう  2005-01-18 02:35:07  No: 118947

>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


特攻隊長まるるう  2005-01-18 02:37:35  No: 118948

…あ、まぁ、知ってると思いますけど 0 の時だけ気をつけて下さいね?。


特攻隊長まるるう  2005-01-18 02:54:02  No: 118949

…サンプルコードがいくらでも引っ掛かると思ったら
…論理演算のページばかりで、コードそのものは案外引っ掛からなかったデス…
基本知識だからなのか…使わないからなのか…案外知られてないのかなぁ?
でもまあ、そのままなのもやはり引っ掛かりますね。
http://fukkey.dyndns.org/pins/vb/020425/36118.html


Say  2005-01-18 03:43:09  No: 118950

>VBにC言語のビットを反転する演算子の様な物は存在しますか?
たとえばByte型変数 bytBuf のbit反転
MsgBox Not bytBuf


ねろ  2005-01-18 18:51:33  No: 118951

>VBはビット演算が無かったような気がしますが。
ビットシフトと勘違い。m(_ _)m
所で、補数計算  Y=2^8-X  これじゃだめと言うことかな。
スピードはちょっと遅いけど。


ひろ  2005-01-18 18:51:44  No: 118952

こういうこと?

    Dim i As Integer
    Dim b As Byte
    i = CInt(Text1.Text) 'この辺は適当に
    b = i And &HFF
    Debug.Print "i=" & CStr(i) & " b=" & Hex$(b)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加