質問 |
||
| 質問者:C_is_Best | CASLの問題 | |
|---|---|---|
困り度:
|
http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H11a2/pm10.html で被乗数を14ビットシフトの意味を理解できなく この問題を解けません どなたかご教授を |
|
質問投稿日時:07/09/06 09:33 質問番号:3319820 |
||
回答 |
|
| 回答者:Dxak | #1です う〜ん?ロジックからCASL文が作れないようなら、かなり厳しいかと・・・ > で被乗数を14ビットシフトの意味を理解できなく > この問題を解けません で、14ビットシフトではなく算術シフトの0〜14の15ビットシフトじゃない? 15ビット目は符号ビットとして考えるから・・・ 値が入っている、0ビット〜14ビットまでを演算してると言う話・・・ |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:07/09/06 12:31 回答番号:No.2 |
|
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答良回答20pt |
|
| 回答者:Dxak | 回答が付いてるみたいだから置いといて乗算のアルゴについて (CALSは、20年以上使った記憶が無いから回答も、よく理解が^^;) 例えば7×9で計算するとすると、7を9回ループさせる訳ではなくて 7=0000 0111 9=0000 1001 値を8ビットとして考えて、計算を16ビットを使った場合 > (9=0000 1001)を1bitづつ右にシフトして1ビット目検出 > | (7=0000 0111)を1bitづつ左にシフトして足すはずの値を算出 > ↓ ↓ 1 bit | 1 | 0000 0000 0000 0111 2 bit | 0 | 0000 0000 0000 1110 3 bit | 0 | 0000 0000 0001 1100 4 bit | 1 | 0000 0000 0011 1000 5 bit | 0 | 0000 0000 0111 0000 6 bit | 0 | 0000 0000 1110 0000 7 bit | 0 | 0000 0001 1100 0000 8 bit | 0 | 0000 0011 1000 0000 ------------------------------- で、(9=0000 1001)の1ビット目が1の場合のみ足し算すると・・・ 1 bit | 1 | 0000 0000 0000 0111 = 7 4 bit | 1 | 0000 0000 0011 1000 = 56 ------------------------------- 計 | | 0000 0000 0011 1111 = 63 と、なります 算数でnをm回足したものが掛け算ですが、そう言う計算ではなく もう少し先で習う掛け算を2進で行うのが回答だったと・・・ これだと、いくつ×いくつでもループ回数が固定され、レスポンスが一定になるというメリットがありますが、今は最初から乗算があるCPUが多いのであまり意味が無いですね;; で、書いている意味理解できそうです? |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:07/09/06 10:39 回答番号:No.1 |
|
| この回答への補足 | 教えていただいたロジックは理解できますが 問題とむすびつかなくて? |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |