《C语言程序设计进阶》7.2.1按位运算

按位运算的运算符

  • &:按位
  • |:按位
  • ~:按位取反
  • ^:按位异或
  • <<左移
  • >>右移

按位与

应用

  • 让某一位或某些位为0,其他位不变
    • 如:x & 0xFE让x最低位为0
  • 取一个数中的一段
    • 如:x & 0xFF取int的最后一个字节

按位或

应用

  • 使得一位或几个位为1
    • 如:x | 0x01使得x最低位为1,其他位不变
  • 把两个数拼起来
    • 如:0x00FF | 0xFF00

按位取反

把1位变0,0位变1

应用

  • 想得到全部位为1的数:~0
  • 7的二进制是0111
    • x | 7使得低3位为1
    • x & ~7使得低3位为0

按位异或

应用

  • 如果x和y相等,那么x ^ y的结果为0
  • 对一个变量用同一个值异或两次,等于什么也没做
    • x ^ y ^ y —> x,简单的加密

逻辑运算VS按位运算

  • 对于逻辑运算,它只看到两个值:0和1
    • 可以认为逻辑运算相当于把所有非0值都变成1,然后做按位运算

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2021 zhangguoliu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信