举个例子,看下列代码:
tbuf[0]= (aacx>>8)&0xFF;
tbuf[1]=aacx&0xFF;
分析如下:
前面有定义,short aacx=0;
unsigned char tbuf[2];
说明short是16位的整形,初始赋值0,假如accx通过函数得到1010101010011001,右移8位后是0000000010101010,它和11111111(0xFF)取和,11111111前面可以在加8个0为0000000011111111,值都是一样的,和1取&还是它自身, 求和后得10101010。
1010101010011001和11111111(0xFF)求和,同样11111111前面也加8个0为0000000011111111,求和后得aacx后面的8位为10011001。
所以上述tbuf[0]是aacx的前8位的数,tbuf[0]是aacx的后8位的数。
结论,0xFF=11111111=0000000011111111,值的大小都是一样的,前面可以补任意0。
16位的0000000011111111和8位的11111111值的大小都是一样的。