位运算(以二进制补码为对象的运算)

运算符的分类

运算符的分类
注:
①:位运算符中除了 “ ~ ” 以外,均为二元运算符,即两侧都要各有一个运算量。
②:参加位运算的对象只能是整型或字符型的数据,不能为实型数据。
③:所有的位运算都是在二进制补码的基础上进行操作的。

一:按位与:&

1.表达式: a & b

2.功能: 将左右两个整数的二进制补码按位进行与操作。

3.举例:
按位与

4.计算: 两个位都是1,结果就是1,否则为0。

5.巧用:

设X是一个正整数。

①:X & 1 <=>x % 2用于判断奇偶数判断一个整数的二进制补码尾部是否为1

②:清零: 如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都是零的数值相与,结果为零。

③:取一个数中的指定位:
例如:X=10101110,取X的低四位,用X&0000 1111=0000 1110即可得到。
方法: 找一个数,对应x要取的位,该数的对应位为1,其余位为零,此数与x进行“与运算”可以得到x中的指定位。

二:按位或:|

1.表达式: a | b

2.功能: 将左右两个整数的二进制补码按位进行或操作。

3.举例:
按位或

4.计算: 两个或一个位是1,结果是1,否则为0。

5.巧用:

常用来对一个数据的某些位置1
方法: 找到一个数,对应x要置1的位,该数的对应位为1,其余位为零。此数与x相或可使x中的某些位置1。

三.按位异或:^

1.表达式: a ^ b

2.功能: 将左右两个整数的二进制补码按位进行异或操作。

3.举例:
请添加图片描述

4.计算: 两个位不同,结果是1,否则结果是0。

5.巧用:

①: 与1相异或,使特定位翻转。
方法: 找一个数,对应X要翻转的位,该数的对应为1,其余位为零,此数与X对应位异或即可。
例如: X = 1010 1110,使X低四位翻转,用X ^ 0000 1111 = 1010 0001即可得到。

②: 与0相异或,保留原值。

③: 交换两个值,不用临时变量。
原理: 一个数异或本身等于0 ,异或运算符合交换律。

例如:

    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
    //x与y的值发生交换

四.按位非:~

1.表达式: ~a

2.功能: 对一个整数的二进制补码进行非运算。

3.举例:

     ~ 1 = 0;
     ~ 0 = 1;

4计算: 操作一个数,对位取反,0变成1,1变成0。

五.按位左移:<<

1.表达式: 被操作的数据 << 被位移数

2.举例:
按位左移

3.计算: 左移左边被舍弃,左移右边补0。

4.巧用:

对于正整数而言,左移1位即扩大2倍。
k = x << 1 <=> k = x * 2

六.按位右移:>>

1.表达式: 被操作的数据 >> 被位移数

2.举例:
按位右移

3.计算: 右移右端被舍弃,对无符号数,左边高位补0,对于有符号数,如果原来符号位为0(该数为正),则左边也补0,如果原来符号位为1(该数为负),则左边补0还是1,要取决于所用的计算机系统,补0的称为“逻辑右移”,即简单的右移,不考虑数的符号问题,补1的称为“算数右移”(保持原有的符号)。

4.巧用:

对于正整数而言,右移一位即除以2.
k = x >> 2 <==> k = x / 2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值