C语言 ——— 按位与、或、异或操作符

目录

& --- 按位与操作符

按位与操作符运用规则

按位与操作符相关代码

按位与操作符相关代码验证

| --- 按位或操作符 

按位或操作符运用规则

按位或操作符相关代码

 按位或操作符相关代码验证

^ --- 按位异或操作符

按位异或操作符运用规则

按位异或操作符相关代码

按位异或操作符相关代码验证 


  1. 按位与、或、异或操作符的操作数必须是整数
  2. 按位是按二进制位操作的,也就是按数据存在内存中的补码进行与、或、异或操作
  3. 关于整数补码的相关知识请见:整数的二进制表示形式:原码、反码、补码-CSDN博客

& --- 按位与操作符

按位与操作符运用规则

对应二进制位有0则为0,两个同时为1,才是1

按位与操作符相关代码

int a = 3;
int b = -5;

int c = a & b;

printf("%d\n", c);

 3存储在变量a的补码 和 (-5)存储在变量b的补码如下图:


 由以上a和b的补码得出a & b:

  1. (a & b)的最高位为0,说明为正整数,且正整数的原码、反码、补码相同
  2. (a & b)的二进制转换十进制:1*2^0 + 1*2^1 = 3
  3. 所以(a & b)的值存储在变量c中,以%d的形式打印出来为3

按位与操作符相关代码验证


| --- 按位或操作符 

按位或操作符运用规则

对应的二进制位有1则1,两个同时为0,才为0

按位或操作符相关代码

int a = 3;
int b = -5;

int c = a | b;

printf("%d\n", c);

结合以上的绘图,先计算出(a | b)的补码


 (a | b)的补码为负整数,负整数的补码到原码是需要计算的

(a | b)的原码存储到变量c中,c所存储的值为:-5


 按位或操作符相关代码验证


^ --- 按位异或操作符

按位异或操作符运用规则

对应的二进制位相同为0,相异为1

按位异或操作符相关代码

int a = 3;
int b = -5;

int c = a ^ b;

printf("%d\n", c);

计算(a ^ b)的补码


(a ^ b)的补码为负整数,计算出原码

由此可得(a ^ b)的原码存储的变量c中的值为:-8


按位异或操作符相关代码验证 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值