• ベストアンサー

プログラマ電卓でどのように変換すればよい?

「&H800」は10進法で2048になるようですが Win7付属のプログラマ電卓でどのように変換したらそうなるのでしょうか? 16進でF800と入力して10進に切り替えると、63,488になってしまいます。 いまプログラミングをしていて、プログラム上では、F800は2048になるのですが それを電卓で計算するにはどうすれば良いでしょうか?

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>Win7付属のプログラマ電卓でどのように変換したらそうなるのでしょうか? 「&H800」は2進数の100000000000なので10進数に置き換えると2^11=2048になります。 あなたの思考回路を見直して扱い値がWord(16bit)、DWord(32bit)、QWord(64bit)の何れを対象としているかの定義が必要です。 「&H800」は上の全ての条件で10進数に直すと2048になります。 >16進でF800と入力して10進に切り替えると、63,488になってしまいます。 &HF800はWord(16bit)として扱うと-2048であり、DWord(32bit)またはQWord(64bit)では63,488になります。 >いまプログラミングをしていて、プログラム上では、F800は2048になるのですが -2048(負数)ではなく2048(正数)になるのであればプログラムの誤りです。 あなたが扱っている値を2進数で評価すると誤りの原因が分かるでしょう。 >それを電卓で計算するにはどうすれば良いでしょうか? 電卓で強制的に誤りを発生させる手段はありませんのでプログラムの結果を電卓で確認してプログラムの誤りを認識してください。

GBNIMUEUWN
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

F800 は16bitで -2048 を表現した物です。 電卓の使い方で言うと、左下のword(16bit)を選択して16進で F800 を入れて10進に直すと -2048 になります。

GBNIMUEUWN
質問者

お礼

あら おっしゃる通り、16bitにしたら、 F800が2048になりました。ありがとうございました。

  • gha10320
  • ベストアンサー率71% (5/7)
回答No.1

F800と入力して、63488になるのが正しいです。 800(16進)->2048(10進)です。 あなたのプログラムが間違っています。 &H800は16進の800という意味です。 F800のFはどこからでてきたのでしょうか。

GBNIMUEUWN
質問者

お礼

最初の「F」が余計だったようですね。 見間違えてました。