質問: 論理加算と算術加算ってなんですか? 論理加算と算術加算ってなんですか? wikiでしらべたんですが専用ページがないんですね 検索もしてみましたがどうやらしっていてあたりまえのような扱いになっていて説明がありません caslの勉強をはじめたのですが論理加算と算術加算とは何か教えてください
回答: 論理加算と算術加算の違いは、データを符号無しとみなすか、符号付きとみなすかという点で異なっています。 ◆違いの説明 ・論理加算 数値を符号無し数値(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_hani_yougo.pdf また、実際の動作はcasliiシミュレータで確認することができます。 casliiシミュレータは次のwebを参照してください。 http://www.jitec.ipa.go.jp/1_20casl2/casl2dl_001.html - 以上 -