Skip to content

Latest commit

 

History

History
36 lines (26 loc) · 1.08 KB

7.md

File metadata and controls

36 lines (26 loc) · 1.08 KB

位运算符分析

在C语言中的位运算符

运算符 名字
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移

| 右移

1、&按位与、|按位或、^按位异或:

  • 结合律:a&b&c = (a&b)&c = a&(b&c)
  • 交换律:a&b = b&a

2、位运算符分析

  • 左移和右移注意点

    • 左移运算符<<将运算数的二进制位左移,规则:高位丢弃,低位补0;
    • 右移运算符>>将运算数的二进制位右移,规则:高位补符号位,低位丢弃。
  • 防错准则

    • 避免位运算符、逻辑运算符和数学运算符同时出现在一个表达式中;
    • 当位运算符、逻辑运算符和数学运算符需要同时参与运算时,尽量使用括号()来表达计算次序。
  • 小技巧

  • 左移n位相当于乘以2的n次方,但效率比数学运算符高;

  • 右移n位相当于除以2的n次方,但效率比数学运算符高。

  • 异或运算符^

    • 偶数个相同的整数异或为0,奇数个相同的整数异或为自身;
    • 0跟任意整数异或都为该整数。