教えて!gooにおける不適切な投稿への対応について

論理加算と算術加算ってなんですか?

wikiでしらべたんですが専用ページがないんですね
検索もしてみましたがどうやらしっていてあたりまえのような扱いになっていて説明がありません
caslの勉強をはじめたのですが論理加算と算術加算とは何か教えてください

gooドクター

A 回答 (2件)

例えば、


0110+0101
の演算の場合、

論理演算:
0110+0101
→偽真真偽 OR 偽真偽真
→偽真真真
→0111

算術演算:
0110+0101
→6 + 5 (十進数)
→11 (十進数)
→1011

だとか。


> 論理加算と算術加算とは何か教えてください

算術加算は小学校なんかで習う足し算。

論理加算は、通常は論理和の事です。

Wikipedia - 論理演算
http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86% …
    • good
    • 3

論理加算と算術加算の違いは、データを符号無しとみなすか、符号付きとみなすかという点で異なっています。



◆違いの説明
 ・論理加算
  数値を符号無し数値(0~65535)として加算します。
 ・算術加算
  数値を符号付きの数値(-32768~32767)として加算します。

◆詳細な説明
 数値を見ただけ(データのビットの並び)では、論理加算と論理演算は
 同じ結果になります。
 結果が異なるのは、フラグレジスタのOF(OverFlow Flag)です。
 尚、フラグレジスタのSF(Sign Flag)はどちらの演算でも同じになり
 ます。

 極端な例として、0xFFFFに同じ数値0xFFFFを加算してみます。
 (0xはC言語で16進数の表記に使われているものです。)
  ○論理加算
    論理加算では0xFFFFは65535とみなされます。よって、
    0xFFFF(=65535)と0xFFFF(=65535)の論理加算結果は
    0x1FFFE(=131070)と16ビットの表現範囲を越えてしま
    い(オーバーフローとなり)ますので、実際の演算結果
    は 0xFFFE(=65534) となります。この場合、フラグ
    レジスタのOFは1にセットされます。

  ○算術加算
    算術加算では0xFFFFは-1とみなされます。よって、
    0xFFFF(=-1)と0xFFFF(=-1)の算術加算結果は
    0xFFFE(-2)となります。演算結果にはオーバーフロー
    はありませんので、フラグレジスタのOFは0になります。

 ちなみに、フラグレジスタのSFはどちらも1にセットされます。
 (それは、演算結果が0xFFFFで、bit15が1になっているからです。)
 論理加算の場合は符号無し演算なので、上の計算でSFが1になるのは
 納得しにくいところですが、情報処理推進機構(IPA)に問い合せたと
 ころそれは「仕様通り」だそうです。

論理加算(論理減算)・算術加算(算術減算)については、情報処理推進
機構の公開資料
 「試験で使用する情報処理用語・プログラム言語など Ver1.0」
の3頁を参照してください。

http://www.jitec.jp/1_00topic/topic_20081027_han …

また、実際の動作はCASLⅡシミュレータで確認することができます。
CASLⅡシミュレータは次のWEBを参照してください。

http://www.jitec.ipa.go.jp/1_20casl2/casl2dl_001 …

- 以上 -
    • good
    • 6

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング