回答編集履歴
4
追記対応
answer
CHANGED
@@ -7,4 +7,14 @@
|
|
7
7
|
|
8
8
|
以前色々検索したのですが、PDP-11の浮動小数点フォーマットを記した日本語ページは見つかりませんでした。インターネット以前のIT界情報は少ないです。
|
9
9
|
私の記憶では、上記以外は、ビット構成など同じだったはずです。
|
10
|
-
IEEE754を知った時、「え?仮数部が1以上2未満なの?」とビックリした記憶があります。
|
10
|
+
IEEE754を知った時、「え?仮数部が1以上2未満なの?」とビックリした記憶があります。
|
11
|
+
|
12
|
+
#追記に対して
|
13
|
+
> 仮数部の16進数を10進数に直すと、6141635となります。
|
14
|
+
|
15
|
+
そこがそもそも間違っています。
|
16
|
+
|
17
|
+
0x5db6c3は、小数部ですが、23bitなので、省略された24bit目に整数部1を付けて、0xddb6c3 が仮数です。小数点は、先頭ビットの次にありますので2進数で表すと、0b1.101 1101 1011 0110 1100 0011 。指数は 0x7fから127を引いて0ですね。
|
18
|
+
仮数部を0.5以上にしないといけないので、仮数を2で割って、指数に1を足します。全体の値としては変わりません。仮数を2で割るというのは、2進数で小数点を1桁左へ移動させるということなので、0b0.1101 1101 1011 0110 1100 0011
|
19
|
+
仮数を10進数に直すと、0.5+0.25+0.0625+(以下略) = 0.8660699~
|
20
|
+
これに2の1乗を掛けた物が、元の数値になります。
|
3
訂正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
> EEE754が規定される前に作られた関数なのかな・・?と考えましたが・・・
|
2
2
|
|
3
3
|
その通り、歴史的理由です。
|
4
|
-
C言語がUnix上で発展してきた事はご存じでしょうが、Unixは今は無きDEC(COMPAQが吸収合併さらにHPと合併)のPDP-11というコンピューター(ミニコン)上で
|
4
|
+
C言語がUnix上で発展してきた事はご存じでしょうが、初期のUnixは今は無きDEC(COMPAQが吸収合併さらにHPと合併)のPDP-11というコンピューター(ミニコン)上で動いていました。
|
5
5
|
PDP-11や後継のVAX-11が使っていた浮動小数点は、仮数部が0.5以上1未満になるように正規化されていました。
|
6
6
|
Unix上のCで扱う浮動小数点型の関数はそれをモデルにしていますので、その後に定められたIEEE754(仮数部が1以上2未満)とその点が合いません。
|
7
7
|
|
2
誤字訂正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
> EEE754が規定される前に作られた関数なのかな・・?と考えましたが・・・
|
2
2
|
|
3
3
|
その通り、歴史的理由です。
|
4
|
-
C言語がUnix上で発展してきた事はご存じでしょうが、Unixは今は無きDEC(COMPAQが吸収合併さらにHPと合併)のPDP-11とうコンピューター(ミニコン)上で誕生しました。
|
4
|
+
C言語がUnix上で発展してきた事はご存じでしょうが、Unixは今は無きDEC(COMPAQが吸収合併さらにHPと合併)のPDP-11というコンピューター(ミニコン)上で誕生しました。
|
5
5
|
PDP-11や後継のVAX-11が使っていた浮動小数点は、仮数部が0.5以上1未満になるように正規化されていました。
|
6
6
|
Unix上のCで扱う浮動小数点型の関数はそれをモデルにしていますので、その後に定められたIEEE754(仮数部が1以上2未満)とその点が合いません。
|
7
7
|
|
1
訂正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
> EEE754が規定される前に作られた関数なのかな・・?と考えましたが・・・
|
2
2
|
|
3
3
|
その通り、歴史的理由です。
|
4
|
-
C言語がUnix上で発展してきた事はご存じでしょうが、Unixは今は無きDEC(
|
4
|
+
C言語がUnix上で発展してきた事はご存じでしょうが、Unixは今は無きDEC(COMPAQが吸収合併さらにHPと合併)のPDP-11とうコンピューター(ミニコン)上で誕生しました。
|
5
5
|
PDP-11や後継のVAX-11が使っていた浮動小数点は、仮数部が0.5以上1未満になるように正規化されていました。
|
6
6
|
Unix上のCで扱う浮動小数点型の関数はそれをモデルにしていますので、その後に定められたIEEE754(仮数部が1以上2未満)とその点が合いません。
|
7
7
|
|