总结
Role | Usage | |
按位于& | 判断状态 | if (data & 0x3F) |
判断是否是某一状态 | if((data & targetState) == targetState) | |
清零 | data = data & 0x00; | |
判断奇偶性 | if(i & 1) printf("%d%s\n", i, "为奇数"); else printf("%d%s\n", i, "为偶数"); |
|
按位或 | | 将一个数中的某个位置1 | data = data | 0x66; |
调换并合并高八位与低八位 | combinedData = (lowByte << 8) | highByte; | |
按位异或^ | 将一个数中指定的位翻转 | (与0异或保留原值,与1异或翻转) data = data ^ 0xC3; |
交换两数 | (直接使用位操作来实现,免去第三方变量的引入) | |
取反 ~ | 将最低位清零 | data &= ~1 |
变换符号(正变负、负变正) | data = ~data + 1; | |
求整数的绝对值 | (将int右移31位,则int的最高位变成了最低位,这一位就是符号位) | |
左移 << | 取某一位 | int blueMask = 1 << 4; // 蓝灯 int whiteMask = 1 << 5; // 白灯 |
右移 >> | 取高八位 | highByte = combinedData >> 8; |
一、按位与 &
- 有0则0,全1则1
- 1010 & 0011 = 0010
- 0xef & 0xfe = 0xee ( 0x1110