运算符与表达式的概念
运算符
定义:具有一定运算规则的符号,对数据进行操作的方式
符号 运算规则 数据(常量 和 变量)
运算符的分类: 赋值运算符: = 算术运算符: + - * / %
关系运算符:< > <= >= != ==
逻辑运算符:&& || !
位运算符: & | ^ ~ << >>
其他运算符: ++ -- 复合运算符 三目运算符
----------------------------------------------
操作数
定义:运算符操作的对象---数据(常量和变量)
例子:
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倍
----------------------------------------------------------
位运算符的优先级: ~
<< >>
& | ^