質問編集履歴
3
改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
|
12
12
|
コードを変えるより、日本語の説明がわからないといった感じです。
|
13
13
|
|
14
|
+
このコードがどのような動きをするコードか説明できません。
|
14
15
|
|
15
16
|
|
16
17
|
|
@@ -50,7 +51,13 @@
|
|
50
51
|
}
|
51
52
|
```
|
52
53
|
### 試したこと
|
54
|
+
|
53
|
-
|
55
|
+
c00 = a0*b0;
|
56
|
+
c01 = a0*b1;
|
57
|
+
c10 = a1*b0;
|
58
|
+
c11 = a1*b1;
|
59
|
+
初めは上のようにコードを書いていたのですが、ソースコードにあるようにしたら、いろいろ応用が効く?のか分からないですが、変更されて、
|
60
|
+
「被乗数と乗数をともに16ビットを上位8ビットと下位8ビットに分割し夫々について合計4つの組み合わせで乗算を実施して得られた4つの部分和を加算すると16ビット乗算の積(32ビット)になる」と説明したら、上位8bit、下位8bit、部分積をsれぞれ識別できないのか、部分積と8bitの乗算器の関係には気づかないのかと釘を刺され、頭を抱えています
|
54
61
|
右に8ビットシフトがポイントだと思っているのですが、上位8ビット、下位8ビットの意味がよく分かっておりません。うまく説明するために、どのようなことを書けばいいのでしょうか。
|
55
62
|
|
56
63
|
|
2
改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -25,33 +25,30 @@
|
|
25
25
|
### 該当のソースコード
|
26
26
|
|
27
27
|
```c
|
28
|
-
ソースコード
|
29
|
-
```#include <stdio.h>
|
30
28
|
int main()
|
31
29
|
{
|
32
|
-
|
30
|
+
unsigned long a, b, c, d;
|
33
|
-
|
31
|
+
unsigned long a1, a0, b1, b0, c11, c10, c01, c00;
|
34
|
-
|
32
|
+
|
35
|
-
|
33
|
+
for (b = 0x00; b < 0x10000; ++b)
|
36
|
-
|
34
|
+
{ b1 = (0x0FF00 & b) >> 8;
|
37
|
-
|
35
|
+
b0 = 0x0F & b;
|
38
|
-
|
36
|
+
for (a = 0x00; a < 0x10000; ++a)
|
39
|
-
|
37
|
+
{ d = a * b;
|
40
|
-
|
38
|
+
a1 = (0x0FF00 & a) >> 8;
|
41
|
-
|
39
|
+
a0 = 0x0F & a;
|
42
|
-
|
40
|
+
c00 = apx_mul1(a0,b0); //a0*b0;
|
43
|
-
|
41
|
+
c01 = apx_mul2(a0,b1); //a0*b1;
|
44
|
-
|
42
|
+
c10 = apx_mul3(a1,b0); //a1*b0;
|
45
|
-
|
43
|
+
c11 = apx_mul4(a1,b1); //a1*b1;
|
46
|
-
|
44
|
+
c = (c11 << 16) + (c10 << 8) + (c01 << 8) + c00;
|
47
|
-
|
45
|
+
// if (c != d)
|
48
|
-
|
46
|
+
// printf("%lu * %lu = %lu != %lu¥n", a, b, d, c);
|
49
|
-
|
47
|
+
}
|
50
|
-
|
48
|
+
}
|
51
49
|
return 0;
|
52
50
|
}
|
53
|
-
|
51
|
+
```
|
54
|
-
|
55
52
|
### 試したこと
|
56
53
|
|
57
54
|
右に8ビットシフトがポイントだと思っているのですが、上位8ビット、下位8ビットの意味がよく分かっておりません。うまく説明するために、どのようなことを書けばいいのでしょうか。
|
1
説明の仕方を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,6 +9,8 @@
|
|
9
9
|
|
10
10
|
を説明すべきと注意されたのですが、何回も書き直しさせられて根本的に理解できていないのかなと思いました。コードは説明するためなので、ところどころミスはあるかもしれませんが、すみません。
|
11
11
|
|
12
|
+
コードを変えるより、日本語の説明がわからないといった感じです。
|
13
|
+
|
12
14
|
|
13
15
|
|
14
16
|
|