- ベストアンサー
符号付32bit整数→16bit整数
以前、Excel関数を使って上位、下位に分かれた符号付16bit整数を32bit符号付整数に変換する式を見つけ使用させていただき大変助かっています 今回はそのまったく逆でExcel関数を使って符号付32bit整数を上位、下位に分かれた符号付16bit整数に分割したいのですが上手くいかずに困っています 解る方いらっしゃいましたら教えてください よろしくおねがいします
- みんなの回答 (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)
その他の回答 (1)
- neKo_quatre
- ベストアンサー率44% (735/1636)
> 符号付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) とか。
補足
情報不足で申し訳ありません データを渡す相手は三菱製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 このようになるようです よろしくお願いします
お礼
16bit → 32bit → 16bit と変換し検証しました 正、負、共に正しく変換できています、ありがとうございます (作業用のセルを作って)って発想が出来ませんでした とゆうか、そもそも数学の能力が低かったです 本当に助かりました、ありがとうございました