2021-03-21

位运算符

一、简介
位操作是程序设计中对位模式按位或二进制数的一元和二元操作。位运算符(positional operator)是对二进制位进行操作,包括&(按位与),|( 按位或),^( 按位异或),~(取反), <<(左移)和>>(右移)六种。其中,除~外均是二元运算符。

二、运算方法
1.按位与运算
按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。0&0=0; 0&1=0; 1&0=0; 1&1=1,即:两位同时为“1”,结果才为“1”,否则为0。

“与运算”的特殊用途:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;
还可用来取X的2、4、6位。

2.按位或运算
按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。0|0=0; 0|1=1; 1|0=1; 1|1=1, 即 :参加运算的两个对象只要有一个为1,其值为1。

3.按位异或运算
按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1^0=0; 0^1=1; 1^0=1; 1^1=0, 即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

4.按求反运算
求反运算符"~"为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。~1=0; ~0=1;即:对一个二进制数按位取反,即将0变1,1变0。

5.按左移运算
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例:a = a << 2 将a的二进制位左移2位,右补0,左移1位后a = a * 2; 若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

6.按右移运算
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。操作数每右移一位,相当于该数除以2。

三、注意事项
1.位运算是对字节或字中的实际二进制位进行检测、设置或移位,它只适用于字符型和整数型变量以及它们的变体,对其它数据类型不适用。
2.关系运算和逻辑运算表达式的结果只能是1 或0,而位运算的结果可以取0 或1 以外的值。
3.要注意区别位运算符和逻辑运算符的不同。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值