操作符及操作符的属性

1.移位操作符

移位操作符有左移操作符(<<)和右移操作符(>>)两种。
注:移位操作符的操作数只能是整数。

1.1左移操作符
移位规则:左边抛弃、右边补0。

代码示例:

#include<stdio.h>
int main()
{
	int num = 10;
	int n = num << 1;  //左移一位
	printf("%d\n", num);
	printf("%d\n", n);
	return 0;
}

如图:

1.2右移操作符

右移操作符有逻辑右移和算术右移两种,因此运算规则也分为两种。
逻辑右移:左边用0填充,右边丢弃。
算术右移:左边用原该值的符号位填充,右边丢弃。

代码示例:
 

#include<stdio.h>
int main()
{
	int num = 10;
	int n = num >> 1;  //右移一位
	printf("%d\n", num);
	printf("%d\n", n);
	return 0;
}

 如图:

逻辑右移1位演示

 

算术右移1位演示

对于移位运算符,不要移动负数位,这个标准未定义

如:

int num = 10;
num >> -1;  //这个是错误的

 2.位操作符:&、|、^、~

(1)&  ----  按位与:对应的二进制位进行与运算,只要有0即为0,两个同时为1才为1
(2)|   ----   按位或:对应的二进制位进行或运算,只要有1即为1,两个同时为0才为0
(3)^  ----   按位异或:对应的二进制位进行运算,相同为0,相异为1
(4)~  ----   按位取反:全部位取反,1变0,0变1,包括符号位

以上四个位操作符的操作数必须是整数

异或操作符的特点:a^a=0       a^0=a        异或操作符支持交换律

3.操作符的属性:优先级、结合性

3.1优先级
优先级是指在一个表达式中如果存在多个运算符,哪个运算符应该先执行。各种运算符的优先级是不一样的。

3.2结合性
如果两个运算符的优先级是相同的,优先级无法确定先计算哪个,就要根据结合性来计算。大部分的运算符是左结合(从左到右执行),少数运算符是右结合(从右到左执行),如赋值运算符(=)。

优先级表格:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值