如何理解按位与(&)、按位或(|)、按位异或(^)?

今天做题遇到了一道题如下:
int x=3,y=6,z=0;
z = x ^ y << 2;
那么z的值等于多少呢?它的二进制又是多少呢?

这一道题就涉及到了按位异或(^)运算符和左移运算符<<
接这个式子的优先顺序是先计算y<<2,再计算x^y。
那么就理解一下y<<2等于多少?

左移运算符

简单的理解就是将10进制换成2进制,然后再整体左移N位数,补位0。

例如000101 左移两位就为010100。

右移同理

1.按位异或(^)
y=6,可以将6转换为2进制为00110,那么左移两位就为11000,其十进制为24。
 

那么就接着计算x^y了,x的二进制为00011,y的二进制为11000,得以下公式
`00011^11000`该公式的答案是多少呢?


答案就是11011,十进制为27。

按位异或的理解就是,两个二进制进行比较。例如11000

                                                                               00011,若两个结果值有差异的话,则为1。否则为0,不足位补0。

 

2.按位与(&)

若使用按位与来对该题进行计算的话,题干为z=x&y<<2,那么结果就由11000

                                                                                                                  00011进行比较,若两个数值有差异则为0,若都为0,也为0。所以结果就为0。

 

3.按位或(|)

若使用按位或来对该题进行计算的话,题干为z=x|y<<2,那么结果就有11000

                                                                                                                00011进行比较,若两个数值有一个为1的话,结果则为1。所以结果为11011。

 


 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值