ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者: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
この回答への補足教えていただいたロジックは理解できますが
問題とむすびつかなくて?
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示良回答のみ表示