私はビットがオンであるかどうかを決定する次の関数を理解しようとしています:
int isBitISet( char ch, int i )
{
char mask = 1 << i ;
return mask & ch ;
}
まず、なぜ私は文字を取得するのですか?forch=abcdefgh
とi=5
関数は、右から5番目のビット(?)を返すことを想定していますd
。だから、、 mask=00000001<<5=00100000
そして00100000 & abcdefgh = 00c00000
。
なぜ私たちがcharを取得し、キャストなしでこれらすべてのシフトを実行できるのか説明していただけますか?なぜ5番目のビットを取得できなかったのでしょうか。また、ビットがオンであるかどうかに関係なく、戻り値が実際に表示であるのはなぜですか。
編集:「abcdefg」はビットの単なる記号であり、char型で文字列を表すことを意味するものではありませんでした。
以前はcharを'a'
実際の8ビットではなく、と考えていたので、おそらくこれが私の最初の質問に対する答えです。