ダイジェスト。
大きく分けて、四則演算とmod、および論理演算がある。
加減乗除。+-*/を使用する。
演算順序は我々の考えるそれとほぼ同じで、括弧を使うことで演算順序を変えられるのも同じ。
演算する対象は、定数でも変数でもよい。また、基本的には変数への代入の際に用いられるが、計算結果を使い捨てする場合もある。
例
#include<stdio.h>
int main(void)
{
int a = 2;
int b = 10;
int c = a+b;
printf("%d",a+b); //12
printf("%d",c); //12
return 0;
};
modとは剰余である。
%で表す。11%5は1である。
11-(11/5)と書いても同じような結果になるが、modの場合は浮動小数点数にも使えるため、こちらを推奨する。
言語によっては、modという語をそのまま演算子として用いる場合がある。
コンピュータの得意とする演算である。
and,or,xor,notがよく用いられる。
andとは、論理積と呼ばれ、たとえば二つの数があったとして、その数値を
0b00001111
0b01010101
としたときに、andすると0b00000101が得られる。二つの二進数の、同じ桁同士を比べて、どちらも1であったら結果の該当する桁は1になり、どちらかが(あるいはどちらも)0ならば該当桁は0になる。
使用方法としては、上の例の1つめの数のようにして、変数の一部の情報だけを取り出したいときに使うことが多い。(マスクと呼ばれる。)
orとは、論理和と呼ばれ、上記の数を使うと0b01011111が返ってくる。
これは、同じ桁の(少なくとも)どちらかが1であれば、結果を1とする演算である。
xorとは、orの変則型であり、同じ桁のどちらかが1であれば、結果を1とする演算である。どちらも1ならば結果を0とするし、どちらも0ならば当然結果は0とする。
排他的論理和という名称の通りだ。
notは簡単なことで、基本的にはある桁が1ならば結果を0、0ならば結果を1とするものである。
総じて、論理演算は単純な回路で実装できるため、コンピュータシステムにとって高速化しやすい演算方式である。
(論理回路系の講義があれば、もしかしたらALUの作り方を習うかもしれない。四則演算をハードウェアで処理しようとすると莫大な回路が必要になるが、論理演算ではさほど必要ない。)
そういった特性のため、CPUが弱いマシン(特に組み込みシステム用の、せいぜい10MHz程度のマイコンなど)では、可読性を維持できる程度に論理演算を使うことが良いかもしれない。
逆に言えば、CPU資源の有り余っている現代のコンピュータを使う上では、気にする必要は薄い。大量のデータを処理するときに使えればよい程度である。
コンピュータにとって効率的であるということは、人間にとって分かりにくいということでもあるので、用いるならば後々の整備を見越して、どういった考えで書いたのかをコメントで残しておくのが望ましい。
最終更新:2013年04月29日 16:48