左移和右移运算符

在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了。不信你可以试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值