【日更】位运算

本文详细介绍了计算机中二进制位运算的原理和常见操作,包括与(&)、或(|)、异或(^)、取反(~)、左移(<<)和右移(>>)等。这些运算在编程中用于高效地处理数据,如清零、设置位、翻转位和交换数值。位运算的运用能提高代码的运行效率,尤其在处理二进制数据和进行特定逻辑操作时显得尤为重要。
摘要由CSDN通过智能技术生成
概述

现在计算机中所有的数据都是以二进制方式存储数据。即0/1,计算机对二进制数据的运算都被称为位运算。如:

int a = 35;
int b = 47;
int c = a + b;

计算两个数的和,因为在计算机中都是以二进制进行运算,所以上面我们所给的int变量会在机器内部先转化为二进制再进行相加操作,如:

350 0 1 0 0 0 1 1
470 0 1 0 1 1 1 1
-----------------------
820 1 0 1 0 0 1 0

相比于在代码中直接用运算符进行运算,位运算会拥有更高效率

常见位运算
符号描述规则
&两位都为1时才为1
|两位都为0时才为0
^异或两位相同为0 不同为1
~取反0变1 ,1变0
<<左移各二进制为全部左移若干位,高位丢弃,低位补0
>>右移各二进制为全部右移若干位,若无符号数,高位补0,有符号数,按照编译器规则处理
按位与(&)运算

有0则为0

用途
  1. 清0
  2. 取一个数的指定位 – 值需要找另外一个数,令数的低四位为1,其余位为0,就可以找到
  3. 判断奇偶 只要根据末位是0还是1来决定,为0就是偶数,为1就是奇数
按位或(|)运算

有1则为1

用途
  1. 用来对一个数据的某些位设置为1 – 比如将数 X=1010 1110 的低4位设置为1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位或运算(X|Y=1010 1111)即可得到。
异或运算(^)

相同为0,不同为1

用途
  1. 翻转指定位 – 比如将数 X=1010 1110 的低4位进行翻转,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行异或运算(X^Y=1010 0001)即可得到。
  2. 与0异或值不变
  3. 交换两个数
void swap ( int a ,int b){
	if(a!=b){
		a^=b;
		b^=a;
		a^=b;
	}
}
左移运算符

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

右移运算符

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。
操作数每右移一位,相当于该数除以2。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

new_repo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值