首页 > 编程语言 > 详细

C++中位运算符异或 ^、&、|

时间:2019-09-06 22:05:50      阅读:113      评论:0      收藏:0      [点我收藏+]

& :只有2个都为1,那么结果是1,否则为0;例如:1&1=1,1&0=0,0&0=0,0&1=0;

11 & 3 = 3

   00001011
&  00000011
=  00000011 = 3

| :只要有一个是1,那么结果为1,否则为0;例如:1&1=1,1&0=1,0&0=0,0&1=1;

11 | 3 = 11

   00001011
|  00000011
=  00001011 = 11

>> :向右位移,就是把尾数去掉位数,例如:153 >> 2,153的二进制是:10011001,屁股后面去掉 2 位 100110,100110 转化成十进制就是 38,153 = 10011001,38 =100110,"01" 去掉了。

<< :向左位移,就是把开头两位数去掉,尾数加位数00,例如:

107 = 0110 1011 <<2
<<
172 = 1010 1100

在计算机中由于是32位的

107 = 0000 0000   0000 0000   0000 0000   0110 1011 <<2
<<
428 = 0000 0000   0000 0000   0000 0001   1010 1100

^ :两个相同的数会变成0,反之是1,例如:1&1=0,1&0=1,0&0=0,0&1=1;

11^3 = 8

   00001011
^  00000011
=  00001000 = 8

任何数异或 ^0 得到的值不变:

a^0 = a

任何数异或同一个数两次得到的值不变:

a^b^b = a

C++中位运算符异或 ^、&、|

原文:https://www.cnblogs.com/gkh-whu/p/11478300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!