C语言中的操作符

1.<<左移操作符

先看代码:

#include<stdio.h>

int main()
{
	int a = -5;
	int b = a << 1;

	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

整数在计算机中是以二进制补码的形式存储的

其中正数的原反补都相同,负数的原反补有相应的计算规则:

而左移操作符是将操作数整体左移,并在右边补0

由补码再得到原码也是符号位不变,其他的按位取反。计算的到该二进制补码表示的数为-10

观察结果可以发现,移位操作符并不改变被操作数本身的值。

 总结下原反补的换算规则

 2.>>右移操作符

看下右移操作符的作用:

右移操作符有两种右移方式:

1):整体右移,左边补0

2):整体右移,左边补符号位

 那-3怎么得到的:

 说明这里面的右移操作符采用的是算数右移。

对于右移操作符是逻辑右移还是算数右移取决于当前的编译器

很明显,这里我用的编译器是采用的算数右移

 3.&  与操作符   

4. |  或操作符

5.^  异或操作符

 

 a=a^b;

b=a^b;

a=a^b;

这样三次异或完成 和 的值的交换。

应用:

//计算整数的二进制位的1的个数
int main()
{
	int n = 0;
	scanf("%d", &n);
	int count = 0;
	int i = 0;
	for (i = 0; i < 32; i++)
	{
		if (((n >> i) & 1) == 1)
		{
			count++;
		}
	}
	printf("%d\n", count);
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值