ちょっとそこまで♪

ようこそ♪ここでは日常の出来事等を紹介していきたいと思っております。それと共感できる仲間も作りたいです♪

第10章 キャスト・ビット演算子について

2006-11-09 23:32:35 | Weblog
さてさて、今回は相方がいないので自分ですすめていこうとおもいます。
なんだか、少し、やつれ気味の私。。まあ、そんなことは別にいいことですが。
god「」
今回は、キャスト演算子・ビット演算子の二つの応用を紹介したいとおもいます。
まず、キャスト演算子のほうなんですが、そもそもキャスト演算子の「キャスト」とは"鋳造する"つまり、ある形にするというのが意味だそうです。
C言語では、整数型から文字型へ"型"をかえることができるという事です。
それをふまえたうえで、応用をごらんください。
#include<stdio.h>
int main()
{
int a =10,b=4;
double c;

c=a/b;

printf("%d÷%d=%f…(1)n",a,b,a/b);
printf("%d÷%d=%f…(2)n",a,b,c);
printf("%d÷%d=%f…(3)n",a,b,(double)a/b);「intをdoubleにする」
return 0
}
結果は・・・
10÷4=0.00000…(1)
10÷4=2.00000…(2)
10÷4=2.50000…(3)
になります。
これでいえば、a=b;はbが何であってもaの型になるということです。
それにしたがえば、(2)はdouble型の2.00000となり、(3)は10がdouble型に変換されたことになります。よってこのような違った式が出来上がるというわけです。
次に・・・、ビット演算子について紹介したいとおもいます。
ビット演算子とは、その名の通りビット単位の演算を行うものです。
ここでビット演算子の応用をしてみましょう。
#include<stdio.h>
int main()
{
unsigned short a,b;
a=1;
b=3;

printf("a&b=%dn",a&b);
printf("a|b=%dn",a|b);
printf("a^b=%dn",a^b);

return0;
}
補足
&は、ビット積演算子で、ビット単位で比較してともに1なら1
|は、ビット和演算子で、どちらかが1なら1
^は、ビット差演算子で、お互いに異なれば1
です。
応用をしてみると…。
#include<stdio.h>
int main()
{
unsigned short a,b;

a=1;
b=3;
printf("a&b=%dn",a&b);
printf("a|b=%dn",a|b);
printf("a^b=%dn",a^b);
return 0;
}
ここではshort型を2バイトとします。
1を2進数であらわせば。0000 0000 0000 0001
3を2進数であらわせば.0000 0000 0000 0011
となります。
そしてビット演算を行うと…。
ビット積 0000 0000 0000 0001
&0000 0000 0000 0011
-----------------------------
0000 0000 0000 0001

ビット和 0000 0000 0000 0001
|0000 0000 0000 0011
-----------------------------
0000 0000 0000 0011

ビット差 0000 0000 0000 0001
^0000 0000 0000 0011
-----------------------------
0000 0000 0000 0010
になります。よって表示されるのは
a&b=1
a|b=3
a^b=2
となります、
※「すいません。。式がずれてしまって。。ご了承ください」
こんな感じで、今回の章は終わりたいとおもいます。
次回は、シフト演算子、条件演算子についてやりたいとおもいます。
ではでは。。
dog「って、俺いるんだけど。。」
god「え…。Σ(○д○;)」
see you☆