0%

二进制运算

在算法题中,常常需要用到二进制运算,这里做个总结

移位运算

<< 左移操作符

将左操作数 向左移动 右操作数 指定的位数,空出的位置补0

左移相当于乘
左移 1 位 相当于 乘 2
左移 n 位,相当于 乘 2^n

C#

1
2
3
x << 1
等价于下面
x * 2

>> 右移操作符

将左操作数 向右移动 右操作数 指定的位数

右移相当于除
右移 1 位 相当于 除以 2
右移 n 位,相当于 除以 2^n, 记得要取整

C#

1
2
3
x >> 1
等价于下面
x / 2 取整

与运算

与运算 判奇偶

二进制 判断 奇偶性,只需判断最后一位 是 0(偶数) 或 1(奇数)

C#

1
2
3
4
5
if ((number & 1) == 1) {
// 奇数
} else {
// 偶数
}

C

1
2
3
4
5
if (number & 1) {
// 奇数
} else {
// 偶数
}

与运算 -1

C#

1
2
3
num & -2
等价于下面
num - 1

参考

感谢帮助!