#include static 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400 }; static { unsigned unsigned for (i = 0; i < length; i++) { ch = pBuf[i]; crc = crcTlb[(ch ^ crc) & 0x000F] ^ (crc >> 4); crc = crcTlb[((ch >> 4) ^ crc) & 0x000F] ^ (crc >> 4); } crc = (crc & 0x00FF) << 8 | (crc >> 8); return crc; } int main() { unsigned unsigned printf(“%X\n”, crc16); return 0; } |
运算符 |
意义 |
示例 |
对于每个位位置的结果(1=设定,0=清除) |
& |
位 AND |
x&y |
如果 x 和 y 都为 1,则得到 1;如果 x 或 y 任何一个为 0,或都为0,则得到 0 |
| |
位 OR |
x|y |
如果 x 或 y 为 1,或都为 1,则得到 1;如果 x 和 y 都为 0,则得到 0 |
^ |
位 XOR |
x^y |
如果 x 或 y 的值不同,则得到 1;如果两个值相同,则得到 0 |
~ |
位 NOT(I的补码) |
~x |
如果 x 为 0,则得到 1,如果 x 是 1,则得到 0 |
运算符 |
意义 |
示例 |
结果 |
<< |
向左移位 |
x<<y |
x 的每个位向左移动 y 个位 |
>> |
向右移位 |
x>>y |
x 的每个位向右移动 y 个位 |