在C语言中,左移和右移运算符在比较某些位置时特别有用,所以今天将其做一总结:
左移运算符<<;
左移运算符<< 使变量每一位向左移动,移出的高位丢失,右边补0;例如 a = 15二进制为0000 1111 a = a<<2,为0011 1100十进制为60。
右移运算符 >> 是变量每一位向右移动,移出的低位丢失。如果为正数左边补0,如果为负数:1,高位补0为逻辑右移。2高位补1为为算术右移。不同编译器不同,vc下默认补1。
当然对于上述内容大家都已经知晓,如果这么简单那这篇博客便没有任何意义,下面先看一个例子。
#include<stdio.h>
void main()
{
int a = 54;
a = a<<32;
printf("%d",a);
}
大家认为这个输出是多少呢?。答案可能让你大吃一惊,结果还是54.对于移动位数大于变量自身的位数时应先做%运算;int型 %32。所以上面程序相当于右移0位,自然就是54了。不信你可以试一下。