概述
1.左移运算符(<<)
定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
设 a=1010 1110,a = a<< 2
将a的二进制位左移2位、右补0,即得a=1011 1000。
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
2.右移运算符(>>)
定义:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。
操作数每右移一位,相当于该数除以2。
3.把变量的某位清零
a &= ~(1<<要清零的位);
注意:位从右往左数,且从0开始数。
4.把变量的某几个连续位清零
//
若把
a
中的二进制位分成
2
个一组
//
即
bit0
、
bit1
为第
0
组,
bit2
、
bit3
为第
1
组,
// bit4
、
bit5
为第
2
组,
bit6
、
bit7
为第
3
组
//例如
要对第
1
组的
bit2
、
bit3
清零
a &= ~(3<<2*1);
//
例如对第
2
组
bit4
、
bit5
清零
a &= ~(3<<2*2);
5.对变量的某几位进行赋值
对于上述清零完后要进行赋值
//若a = 1000 0011 b ,
此时对清零后的第 2
组
bit4
、
bit5
设置成二进制数“
01 b
”
a |= (1<<2*2);
//a = 1001 0011 b
,成功设置了第
2
组的值,其它组不变
6.对变量的某位取反
//若a = 1001 0011 b ,要把 bit6
取反,其它位不变
a ^=(1<<6);
//a = 1101 0011 b
最后
以上就是淡然柠檬为你收集整理的位运算——左移右移的全部内容,希望文章能够帮你解决位运算——左移右移所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复