[收藏]标准C++中的位操作详解

 

在标准C++中,位操作符包括:&(位与),|(位或),^(位异或),~(位非),<<(位左移),>>(位右移)。


下面将详解的加以说明:


一:&(位与)


位1  位2  位1&位2


0          0           0


0          1           0


1          0           0


1          1           1


例:


int main()


{


    int c1,c2;


    c1=0x45;


    c2=0x71;


    std::cout<<"Result of "<<hex<<c1<<" & "<<c2<<" = "<<(c1&c2)<<dec<<'/n';


}


该程序的输出结果是:Result of 45 & 71 = 41


这是因为:


                c1=0x45      二进制 01000101


                                              &    c2=0x72      二进制 01110001


                                              =    0x41            二进制 01000001



二:|(位或)


位1  位2  位1|位2


0          0           0


0          1           1


1          0           1


1          1           1


例:


     i1=0x47  01000111


  |  i2=0x53  01010011


       0x57  01010111


三:^(位异或)


位1  位2  位1^位2


0          0           0


0          1           1


1          0           1


1          1           0


例:


   i1=0x47  01000111


^  i2=0x53  01010011


      0x14  00010100


四:~(位非)


位  ~位2 


0         1


1         0      


例:


      c=0x45    01000101


   ~c=0xBA   10111010


五:<<,>>(位左移,位右移)


                    c=0x1C  00011100


位左移操作:c<<1 -> c=0x38  00111000


位右移操作:c>>2 -> c=0x07  00000111


即:


位左移<<时,左移n位等价于乘以2的n次幂。


位右移<<时,右移n位等价于除以2的n次幂。


例如:


1:位左移


int i,j;


i=j<<3;  //等价于:i=j*8;


2:位右移


int i,j;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值