質問編集履歴

3

誤字修正

2020/11/16 11:45

投稿

yoshiki_iwasa
yoshiki_iwasa

スコア23

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 浮動小数値(float)<->固定数値の変換を可能にするアルゴリズムがどうしてうまくいくのかがわかりません。後に示すやり方でなぜうまくいくのか、理由をご教授いただきたいです。
5
+ 浮動小数値(float)<->固定数値の変換を可能にするアルゴリズムがどうしてうまくいくのかがわかりません。後に示すやり方でなぜうまくいくのか、理由をご教授いただきたいです。
6
6
 
7
7
 
8
8
 
@@ -14,19 +14,19 @@
14
14
 
15
15
 
16
16
 
17
- 浮動小数値を固定数値に変換して保持する場合、一般的に以下のアルゴリズムが使われているようです。
17
+ 浮動小数値を固定数値に変換して保持する場合、一般的に以下のアルゴリズムが使われているようです。
18
18
 
19
19
  なお、わかりやすさのため、以下のルールに従って変換が行われるものとします
20
20
 
21
- **・**固定数値の小数部分は下位8bit とする。
21
+ **・**固定数値の小数部分は下位8bit とする。
22
22
 
23
- **・**固定数値は int型の変数(fix)に格納する。
23
+ **・**固定数値は int型の変数(fix)に格納する。
24
24
 
25
25
  **・**浮動小数値は float型の変数(floats) とする。
26
26
 
27
27
 
28
28
 
29
- **浮動小数→固定数変換アルゴリズム**
29
+ **浮動小数→固定数変換アルゴリズム**
30
30
 
31
31
  ```C++
32
32
 
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- ret = (int)(roundf(floats * (1 << 8)));//所与の浮動小数値 ☓ 2^(固定数部のbit 数)
41
+ ret = (int)(roundf(floats * (1 << 8)));//所与の浮動小数値 ☓ 2^(固定数部のbit 数)
42
42
 
43
43
 
44
44
 
@@ -48,7 +48,7 @@
48
48
 
49
49
  ```
50
50
 
51
- **固定数→浮動小数変換アルゴリズム**
51
+ **固定数→浮動小数変換アルゴリズム**
52
52
 
53
53
  ```C++
54
54
 
@@ -62,7 +62,7 @@
62
62
 
63
63
 
64
64
 
65
- ret = ((float)fixed / (float)(1 << 8));//固定少数値をfloatにキャストして、2^(固定小数値の小数部分のbit数)
65
+ ret = ((float)fixed / (float)(1 << 8));//固定少数値をfloatにキャストして、2^(固定小数値の小数部分のbit数)で割る
66
66
 
67
67
 
68
68
 
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- 上に示した2つの関数について、どうしてこの方法で浮動小数が固定数に変換できるのかわかりません。
89
+ 上に示した2つの関数について、どうしてこの方法で浮動小数が固定数に変換できるのかわかりません。
90
90
 
91
91
 
92
92
 
@@ -94,13 +94,13 @@
94
94
 
95
95
  自分の理解では、floatと固定少数はbitを考えた時構造が全く違うと理解しています。  
96
96
 
97
- 浮動小数値は、符号部・指数部・仮数部に別れます。しかし、固定数値は、符号部・整数部・数部にbitが別れています。だから、いくらbitシフトさせようと浮動小数点は固定数に変換できないと思ってしまいます。そもそも各bit の役割がぜんぜん違うからです。
97
+ 浮動小数値は、符号部・指数部・仮数部に別れます。しかし、固定数値は、符号部・整数部・数部にbitが別れています。だから、いくらbitシフトさせようと浮動小数点は固定数に変換できないと思ってしまいます。そもそも各bit の役割がぜんぜん違うからです。
98
98
 
99
99
 
100
100
 
101
- int型などの整数値を固定数値に変換するのは理解できます。
101
+ int型などの整数値を固定数値に変換するのは理解できます。
102
102
 
103
- 整数値は、第1bitの右にバイナリポイント(数点)があると理解できるので、固定数に治す場合は小数部のbit分だけ、左bitシフトすればいいからです。
103
+ 整数値は、第1bitの右にバイナリポイント(数点)があると理解できるので、固定数に治す場合は小数部のbit分だけ、左bitシフトすればいいからです。
104
104
 
105
105
 
106
106
 

2

呉時

2020/11/16 11:45

投稿

yoshiki_iwasa
yoshiki_iwasa

スコア23

test CHANGED
File without changes
test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
  int型などの整数値を固定少数値に変換するのは理解できます。
102
102
 
103
- 整数値は、第1bitのにバイナリポイント(少数点)があると理解できるので、固定少数に治す場合は小数部のbit分だけ、bitシフトすればいいからです。
103
+ 整数値は、第1bitのにバイナリポイント(少数点)があると理解できるので、固定少数に治す場合は小数部のbit分だけ、bitシフトすればいいからです。
104
104
 
105
105
 
106
106
 

1

質問詳細の説明追加

2020/11/16 09:23

投稿

yoshiki_iwasa
yoshiki_iwasa

スコア23

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
  #質問詳細
10
10
 
11
- このブロックの前段では、質問をわかりやすくするため状況の説明を
11
+ このブロックの前段では、質問をわかりやすくするため状況の説明を実際のコードを用いて行っております。
12
+
13
+ 後段では、何がわからないのかを説明しています。
14
+
15
+
12
16
 
13
17
  浮動小数値を固定少数値に変換して保持する場合、一般的に以下のアルゴリズムが使われているようです。
14
18