进制分类
十进制(decimal
二进制(binary)【以
0b
或0B
开头】八进制(octal):很少使用【以数字
0
开头表示十六进制【以
0x
或0X
开头表示。此处的 a-f 不区分大小写】
计算机数据的存储
-
计算机数据的存储使用二进制
补码
形式存储,并且最高位是符号位
。-
正数:
最高位是0
-
负数:
最高位是1
-
-
规 定
-
正数的补码与反码、原码一样,称为
三码合一
-
负数的补码与反码、原码不一样:
-
负数的
原码
:把十进制转为二进制,然后最高位设置为1 -
负数的
反码
:在原码的基础上,最高位不变,其余位取反(0变1,1变0) -
负数的
补码
:反码+1
-
-
整数:
正数:25 00000000 00000000 000000000 00011001(原码)
正数:25 00000000 00000000 000000000 00011001(反码)
正数:25 00000000 00000000 000000000 00011001(补码)负数:-25 10000000 00000000 000000000 00011001(原码)
负数:-25 11111111 11111111 111111111 11100110(反码)
负数:-25 11111111 11111111 111111111 11100111(补码)
运算符分类
按照
功能
分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符
分类 运算符 算术运算符(7个) +、-、*、/、%、++、-- 赋值运算符(12个) =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等 比较(或关系)运算符(6个) >、>=、<、<=、==、!= 逻辑运算符(6个) &、|、^、!、&&、|| 位运算符(7个) &、|、^、~、<<、>>、>>> 条件运算符(1个) (条件表达式)?结果1:结果2 Lambda运算符(1个) ->
按照
操作数个数
分为:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)
分类 运算符 一元运算符(单目运算符) 正号(+)、负号(-)、++、--、!、~ 二元运算符(双目运算符) 除了一元和三元运算符剩下的都是二元运算符 三元运算符 (三目运算符) (条件表达式)?结果1:结果2
重点
-
自增和自减
++i : 自增前,为先运算再使用运算后的值
i++ : 自增后,为使用运算前的值再运算
例:
int i = 4;
int j = (i++) + (++i);
-> j = 4 + 6;
-> i++,先取i值,i为4,再将i加1;
-> ++i,先i+1,i从5变成6,再用6进行运算;
-
逻辑运算符
“&”和“&&”(短路与)区分:
- 相同点:如果符号左边是true,则二者都执行符号右边的操作
- 不同点:& : 如果符号左边是false,则继续执行符号右边的操作
- && :如果符号左边是false,则不再继续执行符号右边的操作
- 建议:开发中,推荐使用 &&
“|”和“||”(短路或)区分:
- 相同点:如果符号左边是false,则二者都执行符号右边的操作
- 不同点:| : 如果符号左边是true,则继续执行符号右边的操作
- || :如果符号左边是true,则不再继续执行符号右边的操作
- 建议:开发中,推荐使用 ||
难点
-
位运算符
左移:<<
运算规则:在一定范围内,数据每向左移动一位,相当于原数据*2。(正数、负数都适用)
右移:>>
运算规则:在一定范围内,数据每向右移动一位,相当于原数据/2。(正数、负数都适用)
无符号右移:>>>
运算规则:往右移动后,左边空出来的位直接补0。(正数、负数都适用)