美文网首页
C语言:按位运算

C语言:按位运算

作者: 爱生活_更爱挺自己 | 来源:发表于2020-11-14 19:36 被阅读0次

    C语言:按位运算

    • C有这些按位运算的运算符
      • & 按位的与
      • | 按位的或
      • ~ 按位取反
      • ^ 按位的异或
      • << 左移
      • >> 右移

    按位与&

    • (x) == 1并且(y) == 1,那么(x & y) == 1

    • 否则的话(x & y) = 0

    • 按位与常用于两种应用:

      • 让某一位或某些位为0 : x & 0xFE
      • 取一个数种的一段: x& 0xFF

    按位取或|

    • 如果(x) == 1或(y) == 1,那么(x | y) =1

    • 否则的话, (x | y) == 0

    • 按位或常用于两种应用

      • 使得一位或几个为1: x|0x01
      • 把两个书拼起来: 0x00FF | 0xFF00
      1010 1010   AA
    
    | 0101  0100  54
    -----------------
      11111 1110  FE
    

    按位取反 ~

    • (~x) = 1- (x)
    • 把1位变0,0位变1
    • 想得到全部位1的数:~0
    • 7的二进制是0111, x|7使得低3位为1,而
    • x & ~7,就使得低3位为0

    逻辑运算 VS 按位运算

    • 对于逻辑运算,它只看到两个值:0和1
    • 可以认为逻辑运算相当于把所偶非0值变成1,然后做按位运算
      • 5 & 4 —> 4 而 5 && 4 —> 1 & 1 —> 1
      • 5 | 4 —> 5 而 5 || 4 —> 1 | 1 —> 1
      • ~4 —> 3 而 !4 —> !1 —> 0

    按位异或 ^

    • 如果(x) == (y) , 那么(x ^ y) = 0
    • 否则的话,(x ^ y) == 1
    • 如果两个位相等,那么结果为0;不相等,结果为1
    • 如果x和y相等,那么x ^ y的结果为0
    • 对于一个变量用同一个值异或两次,等于什么也没做
      • x ^ y ^ y —>x

    相关文章

      网友评论

          本文标题:C语言:按位运算

          本文链接:https://www.haomeiwen.com/subject/ynlbbktx.html