C 语言位运算
注意: 参与位运算的元素必须是 int 型或者 char 型, 以补码形式出现
1. 按位与 &
& 运算常应用于:
迅速清零
保留指定位
判断奇偶性
a & 1 = 1; 则 a 为奇数
b & 1 = 0; 则 a 为偶数
2. 按位或 |
按位或 (|) 用途: 设定数据的指定位
3. 按位异或 ^
异或 就是位相同等于零, 相异等于 1
按位异或作用:
1. 定位反转
2. 交换数值
// 交换 a 和 b 的值
4. 按位取反~
5. 左移右移
让二进制左移 N 位, 高位丢弃, 低位补 0, 得到的 新值 = 原值 * 2^N,
作用: 实现二倍乘除运算(右移几位相当于除于二的几次方左移几位, 相当于乘上二的几次方)
问题: int 是有符号类型, 左移可能会把符号左移出去, 发生溢出
来源: http://www.92to.com/bangong/2018/03-27/33487751.html