操作符简单介绍;

除法操作符;

1.‘/’除法运算符两边都是整数时,操作结果也是整数;当两边至少有一个小数时,算出来的是小数;
2.代码:
int main()
{
	double z = 7 / 2;//整数除法算出的是3,打印的时候跟类型无关;
	double x = 7.0 / 2;//小数除法必须至少有一个是小数;
	printf("%lf\n", z);//除法中被除数不能为零;
	printf("%lf\n", x);
	return 0;
}
3.运行结果:

取模操作符;

1.取模操作符只能在整数间使用;
2.代码:
int main()
{
	int x = 7 % 2;
	/*double y = 7.0 % 2;*///取模只能在整数间应用;
	printf("%d", x);
	return 0;
}
3.运行结果:

移位操作符;

1.正整数原码反码补码都一样;负数需要计算,反码是符号位不变,其他位按位取反,补码是反码加1;整数在内存中存储的是补码;计算的时候也是使用补码计算;移位移动的是补码的二进制;
2.算数右移:右边丢去,左边补符号位;逻辑右移:右边丢弃,左边补零;一般采用算数右移;左移操作符,左边丢弃,右边补零。
3.代码:
右移:
#include<stdio.h>
int main()
{
	int a = 15;
	int b = -15;
	a = a >> 1;//00000000000000000000000000000111
	//a自身没变;
	b = b >> 1;//11111111111111111111111111110001>>11111111111111111111111111111000>>10000000000000000000000000000111
	printf("%d ", a);//当前编译器是用的算数右移;
	printf("%d ", b);
	return 0;
}
左移:
int main()
{//{
//	int a = 6;//00000x00110  6
//	int b = a << 1;//00000x01100   12

    int a = -6;//10000X0000110  11111X1111001  11111X1111010;
    int b = a << 1;//1111X11110100  -1 1111X11110011  取反1000x00001100 =-12
	printf("%d ", a);//a=a<<1  ====a<<=1;
	printf("%d ", b);
	return 0;
}
4.运行结果:
右移:

左移:

按位操作符;

1.按位与:&  两个为1才是1 按位或:| 有一个1就是1 按位异或:^ 对应的二进制位相同为0,相异为1;
2.计算的时候用补码算,算出来的都是补码,负数要注意化为源码;
3.代码:
#include<stdio.h>
int main()
{
	int a = 3;
	//00000000000000000000000000000011
	int b = -5;
	//10000000000000000000000000000101
	//11111111111111111111111111111010
	//11111111111111111111111111111011
	int c = a & b;
	//00000000000000000000000000000011 3
	int d = a | b;
	//11111111111111111111111111111011
	//11111111111111111111111111111010
	//10000000000000000000000000000101 -5
	int e = a ^ b;
	//11111111111111111111111111111000
	//11111111111111111111111111110111
	//10000000000000000000000000001000 -8
	printf("%d %d %d", c, d, e);
	return 0;
}
4.运行结果;

异或实现数字交换;

1.异或支持交换率的;自己与自己异或是0,与零异或是自己;
2.a^b^a=b;
3.代码:
int main()
{
	int a = 3;
	int b = -5;
	int e = a ^ 0;// 3
	int d = b ^ 0;// -5
	int c = a ^ a;// 0
	a = a ^ b;
	b = a ^ b;//b=a
	a = a ^ b;//a=b
	printf("%d %d %d %d %d\n", e, d, c, a, b);
	return 0;
}
4.运行结果;

计算一个数在内存中‘1’的个数;

1.利用移位操作符和按位与操作符来算;
2.将数和1按位与,如果是1,则这个位是1,如果是0,则这个位是0;运算完后,按位向右移,再与1与;利用for循环,一直移动31次,全部检验完毕;
3.代码:
int main()
{
	int a = 3;//00000000000000000000000000000011
	int b = 1;
	int i = 0;
	int cunt=0;
	for (i = 0;i < 32;i++)//总共移动31位就完成全部
	{
		int c = a >> i;
		int d = c & b;
		if (1 == d)
		{
			cunt++;
		}
		else
		{

		}
	}
	printf("共%d个1\n", cunt);
	return 0;
}
4.运行结果;

逻辑操作符;

1.&&操作符左边是0的话就不再往下计算;||操作符左边是1的话就不再往下计算;
2.代码·:
int main()
{
	int i = 0;
	int j = 0;
	int a = 1;
	int b = 2;
	int c = 3;
	int d = 4;
	//i = a++ && ++c && d++;//a先用后加,&&左边是零,右边就不计算了
	//printf("%d %d %d %d\n", a, b, c, d);//1 2 3 4
	j = a++ || ++c || d++;
	printf("%d %d %d %d\n", a, b, c, d);//a先用后加,a已经为真,||左边为真,后面的不用计算; 2 2 3 4
	return 0;
}
3.运行结果;

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值