現在、CRC演算回路(Cyclic Redundancy Check)の勉強をしているのですが、モジュロ2除算というものがよくわからないので、教えて下さい。何か、Ex-ORを使用して演算しているのですが、どうしてそのような演算結果で、余りが出るのかわからないので、よろしければ、詳しく教えて下さい。よろしくお願いします。

A 回答 (2件)

No.1のymmasayanです。


やはり、舌足らずでしたね。
まず、モジュロにはいろんな意味がありますが、ここでは「剰余:あまり」の事だと思ってください。商は考えずにあまりだけを求める演算をモジュロ演算(モジュロ除算)といいます。BASICでは
Y=25 MOD 3 と書き、Yは1になります。
同様に Y=1 MOD 3 もYは同じ1になります。
次にビット列同士の割り算を考えます。あくまでも、あまりを求めるのが目的です。前回も言ったように電子回路で演算するとき、桁借りは複雑になるので、空中から借りることにします。(そういう割り算ルールを作るのです)

2進数では割り算は2進数の引き算と同じです。1桁だけ考えると
1-1=0 1-0=1 0-0=1 で問題ないですが 
0-1=-1だけは空中から桁借りして、0-1=1とします。
あくまでもそういう約束ですので、覚えてください。

>なぜ上の桁から、桁借りをしなくて、空中から借りてしまってもいいのですか?

あくまでもそういう約束です。回路を簡単にするためだと思います。

>普通に演算しても、モジュロ除算を使用しても、演算結果は、同じなのですか?(自分でやってみて、なんか違うような感じがしたもんで・・・)

もちろん、答えは違うはずです。でも受信側でも同じ演算をするので一向に構いません。

>あと、モジュロ2除算とは、どういうものなのですか?申し訳ないのですが、宜しくお願いします。

2で割ってあまりを求めることですが、先ほど言ったように、ここでは桁ごとに分解して行っています。
    • good
    • 0
この回答へのお礼

丁寧に解説していただき、本当にありがとうございます。大変参考になり、助かりました。また機会があれば、いろいろと教えてください。ありがとうございます。

お礼日時:2001/12/27 11:18

モジュロ除算といっても言葉で受ける印象ほど難しいことはやっていません。


2進法を前提にすれば隣の桁との桁借り、桁貸しのない引き算を桁ごとにやればよいのです。しかも商が欲しい訳ではなくあまりだけが欲しいのですね。
でも引けないときはどうするか? このときは(上の桁からでなく)空中から2を借りてきます。これが起きるのは、0-1=1のときだけです。
桁の貸し借りがないので、EX-ORで演算できるわけがお分かりでしょう。
桁の貸し借りをしないので、CRCチェック用のハードが超簡単化されるはずです。
判りにくければ補足ください。

この回答への補足

ありがとうございます。大体のことは、わかったのですが、少し疑問が残ります。なぜ上の桁から、桁借りをしなくて、空中から借りてしまってもいいのですか?あと、普通に演算しても、モジュロ除算を使用しても、演算結果は、同じなのですか?(自分でやってみて、なんか違うような感じがしたもんで・・・)あと、モジュロ2除算とは、どういうものなのですか?申し訳ないのですが、宜しくお願いします。

補足日時:2001/12/26 09:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qモジュロ演算を教えて下しさい

調べてみてもモジュロ除算?しか出てきません。
なにやらモジュロ演算で誕生日の曜日がわかるとか・・・

よろしくお願いします。

Aベストアンサー

モジュロ演算とは、調べて出てきたモジュロ除算と同じことを言ってるだけです。
誕生日の曜日を計算したければ、
例えば1980年1月1日が誕生日であれば今日の日付(2009年7月6日)から1980年1月1日を引いて10779日が出てきてそれを7で割った余りを求めると6になる。だから誕生日の曜日は6日前と同じ曜日になって火曜日だということが分かります。このときモジュロ演算を行っているのは10779と7から6を求めるところですね。

Q整数演算または論理演算しか使わない分野

大学にて、コンピュータアーキテクチャに関するレポートを書くことになりました。

現在、ほとんどの科学技術分野では、小数点での計算が主に利用されていると思います。
ただ、セキュリティのように整数演算または論理演算しか使わない分野もあると思います。

従って、「整数演算または論理演算しか使わない分野」という切り口からレポートを作成したいと考えています。
切り口はなかなか良いと思うのですが、2進数データを撹拌するセキュリティくらいしか思いつきません。後は信号処理くらいでしょうか。ただ、あまり信号処理も詳しくありません。

できれば、どの分野の○○というように、詳細な情報を頂けると大変助かります。
詳しい方がいたら、なにとぞよろしくお願いします。

Aベストアンサー

確かにNo.1さんが書いているように組み込み系では整数演算にする場合が多いですね。
浮動小数点数演算にすれば正確な値が得られますけど、実用的には必要はない場合が多いでしょ?例えば、車の速度を58.765432km/hなんて細かく求めたところであまり意味がないじゃないですか。
ですからまず浮動小数点数演算でやってみて、ある程度うまくいけば支障のない範囲で整数演算にしてしまうことがあります。
「ある種の」最小二乗法の計算も整数演算だけで行うことができます。計算結果は浮動小数点数演算と同じでしかも高速、計算も簡単です。回帰式の次数が高いほど高速な点が有利になります。
ですから、確かに有限体を使用した暗号化や誤り訂正符号化のように最初から整数演算しか考えられない例もありますが、そうではない例もいろいろあるということだと思います。つまり組み込み系ではどんなところでも整数演算にする種が転がっているということでしょう(浮動小数点数演算の方がプログラミングの手間がかかない場合が多いかもしれませんけど)。

Q微分回路の理論式 画像の積分回路の理論式の導出手順を参考にした微分回路の理論式を求めてほしいです。

微分回路の理論式

画像の積分回路の理論式の導出手順を参考にした微分回路の理論式を求めてほしいです。

Aベストアンサー

回路? 単なるコンデンサーの電圧と電流の関係式ですよ。

オペアンプの入力側に抵抗 Rs が、出力側に静電容量 C のコンデンサーを接続した積分回路なのではありませんか?

微分回路を作りたければ、静電容量 C のコンデンサーを入力側に、抵抗 Rs を出力側にすればよいのです。
↓ こんな構成に。
http://www.nteku.com/opamp/opamp-differential.aspx

そうすれば、
 Vout = -Rs * Ic = -Rs * dQ/dt = -Rs * d(C*Vc)/dt = -Rs * C * d(Vin)/dt
です。

Q頭悪いので本当に基礎から学ぶならどこの予備校がよろしいのですか…

自分は今年浪人することになりました。
しかし自分は現役時代独学でやったのですがダメでした。
敗因は基礎にあります。
基礎からやらずにあれやったりこれやったりと…

ということで今年予備校に行くのですが代ゼミ 河合塾 城南
で迷っています。
自分の偏差値は40代をさまよってる感じでしょう。

なので基礎から死ぬ気でやり最終的に60半ばまで持ってきたいです。

しかし浪人することになるとある程度基礎ができてたりとかになると思うので予備校に不安があります。

なので自分と似たような境遇やその他もろもろな方々で経験談とこの中で基礎から学べるオススメの予備校を教えて欲しいです。

Aベストアンサー

私の友人は質問者さんとおそらく同様の学力から1年の浪人で偏差値60超えるまでになった方がいます。
その方は駿台、河合塾、代ゼミを候補に挙げていましたが、最終的にはみすず学苑という少人数・多クラス分け型の予備校にしたようです。
曰く凄く先生方が親身になって教えてくれたとの事です。
周囲からみると本人もだいぶ努力されていたようですが。

基礎が解らない場合は大手の垂れ流しな授業よりも少人数で解らない箇所がすぐに質問できる環境が良いのかと思います。

Qこれがよくわからないのでバカでもわかるよう教えてください。

これがよくわからないのでバカでもわかるよう教えてください。

Aベストアンサー

直流だと電流の向きが変わらないので連続して点灯します
交流だと電流の向きが変化しているので互い違いに点灯するそうです


人気Q&Aランキング

おすすめ情報