我试图理解以下决定是否开启的函数:
int isBitISet( char ch, int i )
{
char mask = 1 << i ;
return mask & ch ;
}
首先,为什么我会得到一个字符?forch=abcdefgh
和i=5
函数假设返回右数第五位 (?) , d
. 所以 mask=00000001<<5=00100000
和00100000 & abcdefgh = 00c00000
。
你能解释一下我们为什么会得到 char 并且我们可以在没有任何演员表的情况下完成所有这些转变吗?为什么我们没有得到第五位,为什么返回值实际上是该位是否打开的指示?
编辑:'abcdefg' 只是位的符号,我并不是要以 char 类型表示字符串。
我曾经认为 char 是'a'
而不是实际的 8 位,所以这可能是我第一个问题的答案。