• ベストアンサー

符号付32bit整数→16bit整数

以前、Excel関数を使って上位、下位に分かれた符号付16bit整数を32bit符号付整数に変換する式を見つけ使用させていただき大変助かっています 今回はそのまったく逆でExcel関数を使って符号付32bit整数を上位、下位に分かれた符号付16bit整数に分割したいのですが上手くいかずに困っています 解る方いらっしゃいましたら教えてください よろしくおねがいします

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

あんまり検証していませんがこんな感じかな? セルA1に32bitの符号付整数が入っているとします。 A2に上位、A3に下位、A5を作業用に使用します。 A2:=INT(A1/65536) A3:=A5-65536*INT(A5/65536)-(A5>32768)*65536 A5:=IF(A2>=0,A1-MOD(A2,65536)*65536,A1-MOD(A2+32768,65536)*65536+2147483648)

wawawakaba
質問者

お礼

16bit → 32bit → 16bit と変換し検証しました 正、負、共に正しく変換できています、ありがとうございます (作業用のセルを作って)って発想が出来ませんでした とゆうか、そもそも数学の能力が低かったです 本当に助かりました、ありがとうございました

その他の回答 (1)

回答No.1

> 符号付32bit整数を上位、下位に分かれた符号付16bit整数に分割したいのですが 具体的にどうしたいのか?不明瞭です。 負数の場合とか、下位の一番上のビットが1で負数になる場合とか。 例えば、 -12345678(FF43 9EB2)を、 -189(FF43)と、-24910(9EB2) に分けたいなら、 A1に-12345678が入ってるとして、 B1:=RIGHT(DEC2HEX(A1,8),8) C1:=LEFT(B1,4) D1:=RIGHT(B1,4) とか。

wawawakaba
質問者

補足

情報不足で申し訳ありません データを渡す相手は三菱製PLCです、PLC内部では32bitデータとして使用するのですが他の理由で16bitでのやりとりになってしまいました ちなみに16bit整数は -32.768~32.767 32bit整数は -2.147.483.648~2.147.483.647で上位の一番上のビットが1で負になるようです 例として 32bit30000→16bit上位0、下位30000 32bit-30000→16bit上位ー1、下位ー30000 32bit40000→16bit上位0、下位-25536 32bit-40000→16bit上位ー1、下位25536 32bit70000→16bit上位1、下位4464 32bit-70000→16bit上位ー2、下位ー4464 このようになるようです よろしくお願いします

関連するQ&A