C语言左位移运算符和右位移运算符是什么意思,怎么运算,举个例子..

如题所述

就是把一个数转化成二进制再直接对他进行操作
例如:
45>>2 //45右移两位
45的二进制为:101101
右移两位就为: 001011
001011再转化为十进制为:11
所以45>>2= 11
左移运算符
45<<2
45的二进制为:101101
左移两位就为:10110100
10110100再转化为十进制为:180
所以45<<2=180
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-16
位移运算符是左移"<<"和右移">>"
用处是进行位运算,在嵌入式中应用比较多.因为一般来说位运算执行速度快,所以在精确运算中会常用到.
举个例子,你要除2,
用普通方法是 x/=2;是吧?
位运算的方法是 x>>=1; 右移一位,相当于除2了,效率更高(当然也是省略小数点的)
特别是进行大值之间的运算,就更能体现效率了
第2个回答  2014-05-26
左位移 <<
例如 a = 0x01; a<<= 2; 则 结果a = 0x04;
a = 0x81; a<<= 1; 则 结果a = 0x02;
右位移
例如 a = 0x80; a>>= 2; 则 结果a = 0x20;
a = 0x81; a>>= 1; 则 结果a = 0x40;
c语言的移位不是循环,空出来的会补0. 把上面的例子换成2进制看看就很清楚了。
如果要循环移位的话,有专门的系统函数的。
第3个回答  2011-04-16
#include "stdio.h"
void main()
{
int x=3;
int m=1;
int n=5;
printf("%d\n",x>>m);
printf("%d\n",x<<n);
}
输出是1和96
首先将x转换为2进制表示,然后右移1为,变成1
然后将x左移5位,这个你最好理解左右移位的意思
第4个回答  2020-09-26
#include
"stdio.h"
void
main()
{
int
x=3;
int
m=1;
int
n=5;
printf("%d\n",x>>m);
printf("%d\n",x<<n);
}
输出是1和96
首先将x转换为2进制表示,然后右移1为,变成1
然后将x左移5位,这个你最好理解左右移位的意思
相似回答