红 {MOD}为我标注的问题
unsigned char PLAYBUF[64];
void point(unsigned char x,unsigned char y,bit c)
{
unsigned char i;
if(x>=32) return; //这两行是干什么的?怕画点画出点阵的范围吗?
if(y>=16) return; //这两行是干什么的?怕画点画出点阵的范围吗?
i=0x80; //这个变量准备干啥?
i>>=x-((x>>3)<<3); //这是干什么的?为什么先向右移,又向左移?不是等于没移?
if(c)
PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] |= i; //这句彻底看不懂...
else
PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] &= ~i;
}
问题挺多的,请各位高人赐教!给08口的规范更好,先谢谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
//x-((x>>3)<<3)可以看成x%8,x>>3 即x/8求商,商<<3即 商*8,即x在最后一个字节中的位置,现在明白了吧?
PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] |= i; //这句彻底看不懂...
//(y<<1)+((x>>4)<<5)+((x>>3)&0x01)计算x,y对应的位置在playbuf中的字节数。
if这两句,一句是点亮,一句是清除。
一周热门 更多>