操作符详解

一、算数操作符

+(加)   -(减)   *(乘)   /(除)   %(取余)
1. / 除

对于 / 操作符如果两个操作数都是整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

	printf("%d\n",1/4);
	printf("%f\n",1/4.0);

**运行结果**

2. % 取余

% 操作符的两个操作数都必须为整数,返回的数是整除后的余数。

二、移位操作符

<<(左移操作符)   >>(右移操作符)

注意:
移位操作符作用对象为二进制,其中负数运算时需转换为补码

-12
二进制共32位,最高位为符号位,正数为0,负数为1。原码除了符号位各位取反得到反码,反码末位加1得到补码。
原码:
1000 0000 0000 0000 0000 0000 0000 1100
反码:
1111 1111 1111 1111 1111 1111 1111 0011
补码:
1111 1111 1111 1111 1111 1111 1111 0100
1. 左移操作符

左边抛弃,右边补0;

int num=10;
num<<1;
二进制操作结果:
  0000 0000 0000 0000 0000 0000 0000 1010
0 0000 0000 0000 0000 0000 0000 0001 0100
int num = 10;
num<<;
printf("%d\n", num);
printf("%d\n", num<<1);

运算中内存与寄存器的关系
实际上,无论左移,还是右移都是在通过内存数据拷贝到寄存器中再进行运算的,因此左移后内存中内容不变,而在寄存器中内容经过左移变为20。
说明图:
运算中内存与寄存器的关系
运行结果:
输出结果

2. 右移操作符

右移运算分两种
1.对无符号数 逻辑移位,左边用0补充,右边丢弃
2.对有符号数 算数移位,左边用原该值的符号位填充,右边丢弃

算数右移与逻辑右移,例-1
若对负数逻辑右移,则结果为2147483647,结果错误

int num=-1;
此时内存中存储-1的补码为321
1111 1111 1111 1111 1111 1111 1111 1111
算数右移:左边用该值的符号位 1 填充
1111 1111 1111 1111 1111 1111 1111 1111 1
逻辑右移:左边补0
0111 1111 1111 1111 1111 1111 1111 1111 1

三、 位操作符

操作数必须为整数;针对二进制数对应位,按位操作

&(按位与)   |(按位或)   ^(按位异或)
1. & 按位与

二进制数对应位都为1则为1,有0则为0

2. | 按位或

二进制数对应位有1则为1,无1则为0

3. ^ 按位异或

二进制数对应位同则0,异则1
0与任何数异或都是那个数本身
所以 ^ 也可以用来进行值交换

	int a = 12;
	int b = 31;
	a ^= b;
	b ^= a;
	a ^= b;
	printf("a的值:%d\n", a);
	printf("b的值:%d\n", b);

过程详解:
在这里插入图片描述
运行结果:
![运行结果](https://img-blog.csdnimg.cn/20210605163129655.png

四、 赋值操作符

'='的本质是将运算结果放入内存中
'='具有结合性,在连续赋值时从右向左赋值,a的值变为21,x的值也变为21。

int a=10;
int x=0;
int y=20;
a=x=y+1;
printf("a的值:%d\n",a);
printf("x的值:%d\n",x);
printf("y的值:%d\n",y);

运行结果

五、重点谨记

1.牢记运算是将内存中数据拷贝到CPU寄存器后在寄存器中进行运算的,所以寄存器中的运行结果不会影响到内存中的数值
2.若要改变内存中的值,可以通过 '=' 将运算结果放入内存中
运算中内存与寄存器的关系

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值