C语言运算符之三

运算符与表达式的概念
运算符
定义:具有一定运算规则的符号,对数据进行操作的方式
符号          运算规则        数据(常量 和 变量)
运算符的分类: 赋值运算符: =      算术运算符: + - * / %
关系运算符:<   >  <=  >=  !=  ==
逻辑运算符:&&   ||   !   
位运算符: &  |  ^  ~  <<   >>          
其他运算符: ++   --  复合运算符   三目运算符 
----------------------------------------------     
操作数
定义:运算符操作的对象---数据(常量和变量)
例子: 
 5                 +                3 
操作数(常量)  运算符(算数)    操作数(常量) 
int a; 
~                      a;  
运算符(位运算)      操作数(变量) 
单目运算: 只有一个操作数的就称之为单目运算  
-------------------------------------------------- 
表达式
定义:表达实际问题的式子
例子: 
苹果5/斤,买了6斤,问要多少钱?  
5 * 6          我花了多少钱    30    //表达式     运算符 和 操作数
5              苹果5/斤        5     //表达式     常量
6              买了6斤         6     //表达式     常量           
int age = 10;      //表示式      变量  
5 + 6 * 2;
总结: 
①表达式可以是常量,可以是变量,也可以是运算符和操作数的组合
②表达式一定有一个结果数据
③表达式有运算顺序,运算顺序由运算符的优先级决定

位运算符
位运算符的作用是按位(二进制)对变量进行运算
位运算符不能对浮点型数据进行操作       
1) &  按位与(有0为0,全1为1) 
2) |  按位或(有1为1,全0为0)   
3) ^  按位异或(相同为0,不同为1) 
4) ~  按位取反 (1变0,0变1) 
5) << 按位左移  (高位溢出,低位补0)
6) >> 按位右移   (低位溢出,高位补0)
1)按位与 
符号: &   
格式: 数据1  &  数据2        数据(常量,变量)
例子: 10  &  25      //例子都是char类型
原理: ①将两个数据转换成二进制(补码)的形式     
②低位到高位一一对应    
0000 1010    //10   
0001 1001    //25 
③规则: 有0为0,全1为1   
0000 1010    //10   

0001 1001    //25     
-------------------------------                   
0000 1000    //8         
说明:按位与是用来对某一个位进行置为0
如果需要对每个数据的二进制中的某一位置0,按位与一
个对应位是0的数据,按位与是用来对数据的二进制位置0  
2)按位或  
符号:|          格式: 数据1 | 数据2   
例子: 10 | 25    //例子都为char   
原理:   ①将两个数据都转换成二进制(补码)的形式    
②低位到高位一一对应   
0000 1010     //10  
0001 1001     //25  
③规则: 有1为1,全0为0
0000 1010     //10
 |                  
0001 1001     //25                   
0---------------
0001 1011     //27
说明:对应位置为1 
如果需要将某个数据的二进制的某一位置1,
按位或一个对应位是1的数据    
按位与是用来对数据的二进制位置1   
注意:  &置0,|置1                  
3)按位异或 
符号:^    
格式:数据1 ^ 数据2
例子: 10 ^ 25    //例子都为char   
原理:  ①将两个数据都转换成二进制(补码)的形式    
②低位到高位一一对应   
0000 1010     //10  
0001 1001     //25  
③规则:相同为0,不同为1
0000 1010     //10
^                  
0001 1001     //25                        
----------------------  
0001 0011     //19   
4)按位取反            
符号:~  
格式:~数据  
例子: ~10    //例子都为char   
原理:  
①将该数据转换成二进制(补码)的形式    
0000 1010  //10 
②规则: 0变1   1变0   
~ 0000 1010  
 ---------------
  1111 0101                       
5)按位左移  
符号:<<  
格式:数据 << 移动的位数    
例子:10 << 1   //例子都为char   
原理:  
①将该数据转换成二进制(补码)的形式    
0000 1010   //10  
②整体左移,低位补0                       
0001  0100    //20
规律: 
数据左移一位,十进制形式扩大2倍    

int a = 120;
char b;  -128 ~ 127  
b = a << 2;   b:480 - 256=224 -256= -32
 
int a = 20000;
short b;  -32768 ~ 32767     
b = a << 2;    b:80000 - 65536 = 14464
6)按位右移           
 符号:>>  
 格式:数据 >> 移动的位数    
 例子:10 >> 1   //例子都为char   
 原理: ①将该数据转换成二进制(补码)的形式    
0000 1010   //10  
②整体右移,高位补0                       
00000 101 //  5
规律: 数据右移一位,十进制形式缩小2倍  
---------------------------------------------------------- 
位运算符的优先级:   ~
<<  >>   
& | ^     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值