C++ 位运算符的一些总结

按位运算符

按位运算符对整数值的位进行操作。C++中一共有6中按位运算符:“<<”,“>>”,“~”,“&”,“|”,“^”。

1.移位运算符

value是要被操作的数值,shift是要移动的位数。

左移:value<<shift 腾出的位置用‘0’填充,如:13<<3,将13的每一位都向左移3位。

右移:value>>shift 对于无符号整数,腾出的位置用‘0’填充,右边超出边界的位被删掉;对于有符号的整数,腾出的位置有可能用‘0’填充,也可能用原来最左边的位上的数填充。如:13>>3,将13的每一位都向右移3位;

因为每个位都是右边一位的2倍,所以左移一位相当于乘以2,左移n位相当于乘以2^n, 右移一位等于除以2,右移n位相当于除以2^n。

!](https://img-blog.csdnimg.cn/96be58b461594896a5718453086d87e5.jpeg)

在这里插入图片描述

移位运算符在C++中会新生成一个值,不会改变原值。(汇编语言中会直接修改寄存器内容)

如果要改变原值还是要用赋值符号,例:x=x<<4; x<<=4;

2.逻辑按位运算符

逻辑运算符作用于值的每一位,而不是整个值。

  • !(非运算符):运算符将非零值(或true)转为false,将false转为true;

  • ~ (求反运算符):将每一位转为它的反面(1转为0,0转为1);
    例:unsigned char x=3;
    !x=0,将非零值转为false;
    ~x计算时,先写出二进制形式:00000011,再把每个0转为1,每个1转为0,二进制形式改为:11111100,在十进制中表示252。求反运算得到的新值是原值的补值。

  • |(OR运算符):对两个整数值进行操作,生成一个新的整数值。每一位与对应位进行或运算。

  • ^(XOR运算符):对两个整数值进行操作,生成一个新的整数值。每一位与对应位进行异或运算。

    • 异或的规律:
    x ^ 0 = x;//任何数异或0等于自身
    x ^ (~x) = 1;//任何数与自己的非异或等于1;
    x ^ x = 0;//任何数和自身异或等于0;
    c = a ^ b,有:a ^ c = b 或 b ^ c = a;
    a ^ b ^ c = (a ^ b) ^ c = a ^ (b ^ c);
    
  • &(AND运算符):对两个整数值进行操作,生成一个新的整数值。每一位与对应位进行与运算。

3.位运算的小技巧

个人学习总结,侵删,有错请指出。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值