C语言进阶——6.二进制
1. 位运算
-
按位运算
-
运算规则
- 示例
- 按位与
让某一位或某些位为0
。
int n = 0xFFFF;
n = n & 0x0010;
截取二进制数中的一段值。
int n = 0xFFab;
n = n & 0x00FF;
- 按位或
让某一位或某些位为1
。
int n = 0x0000;
n = n | 0x0010;
拼接两个二进制数。
int a = 0xab00;
int b = 0x0012;
int c = a|b;
- 按位取反
得到全部为1
的数字~0
。
int n = ~0;// 等同于0xFFFF
使数字的部分清零x& ~7。
int n = 0xFFFF;
n = n & ~7;
- 按位异或
两个相等数异或结果为0
。
int n = 0x1234;
n = n^n;
对同一个变量两次异或,变会原值。
int a = 0x1234;
int b = 0x1357;
a = a^b;
a = a^b;
逻辑运算与按位运算
- 逻辑运算结果只有0和1两种值,按位运算有多种值。
- 逻辑运算相当于把所有的非零值都变成1,再按位运算。
- 练习
int singleNumber(int* nums, int numsSize){
int xor=0