プロが教える店舗&オフィスのセキュリティ対策術

現在主流となっているコンピューターのアーキテクチャにおいては、実数表現のために浮動小数点数という手法を用いていますが、浮動小数点数表現された2進数はただの2進数であり、たとえばWindowsのプログラムが浮動小数点数を10進表記で表示したりする際には、OSのどのあたりの機能が浮動小数点数を解釈して10進数表記にするのでしょうか?

A 回答 (3件)

OSじゃなくてその表示するアプリケーションがやるのが普通です。


もちろんいちいちプログラムを書くわけじゃ無くて、浮動小数点を10進文字列に変換するライブラリのサブルーチンを呼び出します。

Cだと、sprintf(文字列領域,"%e",浮動小数点の値) とか。
さらにその下のレベルでは、ライブラリのサブルーチンプログラムに含まれる、CPUの浮動小数点処理命令の組み合わせですね。

この回答への補足

プログラムで解釈→OSの入出力処理に渡す→出力
                 ↑
           ここでどのキャラクターを表示
           するかがもうすでに決められて
           いるという解釈でOKですか?

補足日時:2011/10/10 21:42
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2011/10/10 21:40

>ここでどのキャラクターを表示するかがもうすでに決められているという解釈でOKですか?



そうですよ。
浮動小数点に限らず、バイナリ数値を文字に変換するのは、アプリケーションの役目です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/10/23 17:08

Windowsの場合は、カーネルが管理しているようです。

今ではCPUに浮動小数点演算機能が入っているのが当たり前になっていますが、昔はコプロセッサと言ってオプション扱いだったので、アプリ側にCPUの違いを意識させないようにするため、カーネルがコプロセッサをエミュレーションしていました。それが今でも名残として残っているのだと思います。

多分今なら、データと答えの受け渡しをOSがするけど、やってることは本当に受け渡しだけで、実際の仕事はCPUに丸投げみたいな形じゃないでしょうか。

これがもっと昔、DOSくらいになると、浮動小数点ドライバを介してコプロセッサにアクセスしたり、アプリケーションが自分でコプロセッサに依頼したり、あるいは完全に自前で処理するものもありました。今でもやろうと思えば、OSに頼らなくてもアプリ自前でできます。もっと高精度が要求される用途だとか、浮動小数点ではなくCOBOLで使われる固定小数点などでは、自前でしている(OSに頼れないから、そうせざるを得ない)はずです。

この回答への補足

浮動小数点数として認識して、出力時に10進表記にする処理はカーネルが担当しているのでしょうか?

補足日時:2011/10/10 21:38
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2011/10/10 21:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!