第一章 运算符
第一章 运算符
1.1算术运算符
+ | 相加 |
- | 相减 |
* | 相乘 |
% | 取余 |
/ | 相除 |
1.2逻辑运算符
or | 或 ,或者 |
and | 与 ,并且 |
not | 非,取反 |
1.3关系运算符
> | 大于 |
< | 小于 |
>= | 大余等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
结果是布尔值
1.4赋值运算符
= | 将等号右侧的结果赋值给左侧 |
+= | a += 10 <===> a = a + 10 |
-= | a -= 10 <===> a = a - 10 |
*= | a *= 10 <===> a = a * 10 |
/= | a /= 10 <===> a = a / 10 |
**= | a **= 10 <===> a = a ** 10 |
//= | a //= 10 <===> a = a // 10 |
%= | a %= 10 <===> a = a % 10 |
a++ | 如a=10 ,a++=10 |
++a | 如a=10,++a=10 |
a– | 如a=10 ,a–=10 |
–a | 如a=10,–a=10 |
a是会变的
python中,没有自加和自减。
1.5三目运算符
变量 = 表达式 ?结果1:结果2;
int a = 1;
a = a == 1 ? 2:3;
System.out.println(a);
int b = 2;
b = b == 1 ? 2:3;
System.out.println(b);
if (a == 1){
System.out.println(a);
} else {
System.out.println(1);
}
1.6位运算符
位(bit):它是计算机中的最小单位
& | 与运算, 全1为1,有0则0 |
~ | 取反,1变0,0变1 |
I | 或运算,有1为1,全0为0 |
^ | 异或运算,相同为假,不同为真 |
<< | 左移运算,数值value向左移动num位,左边二进制位丢弃,右边补0;若1被移位到最左侧,则变成负数;左移时舍弃位不包含1,则左移一次,相当于乘2。 |
>> | 1)数值value向右移动num位,正数左补0,负数左补1,右边舍弃。(即保留符号位)2)右移一次,相当于除以2,并舍弃余数。3)无符号右移>>>:左边位用0补充,右边丢弃。 |
符号位(最高位):0为正,1为负
计算机中都是以补码运行,而要读要变回原码读取
使特定数位翻转(与1异或)、保留原值(与0异或)、交换两个变量的值。 交换两个变量的值:
借助第三个变量来实现。C=A;A=B;B=C;
利用加减法实现两个变量的交换。A=A+B;B=A-B;A=A-B;
用位异或运算来实现,效率最高。A=A^B;B=A^B;A=A^B;(一个数异或本身等于0)
1.7进制的转换
十进制转换成其他进制
Integer.toHexString(int i);//十六进制
Integer.toOctalString(int i);//八进制
Integer.toBinaryString(int i);//二进制
其他进制转化为十进制
Integer.valueOf("fff0",16).toString();
Integer.valueOf("123",8).toString();
Integer.valueOf("0101",2).toString();
1.8所属运算符
判断一个值是否存在于某个复合数据类型(容器)
in或者not in
1.9源码,反码,补码
负数以其正值的补码形式表示
原码:一个整数按照绝对值大小转换成的二进制数,符号位取1,称为原码。
反码:符号位不变,将二进制按位取反,所得的新二进制数称为原二进制数的反码。
补码:反码加1称为补码。
原码:一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
10000000 00000000 00000000 00000101 是 -5的 原码。
反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:正数00000000 00000000 00000000 00000101 的反码还是 00000000 00000000 00000000 00000101
负数10000000 00000000 00000000 00000101每一位取反(除符号位),得11111111 11111111 11111111 11111010。
称:11111111 11111111 11111111 11111010 是 10000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互为反码。
3.补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
比如:10000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
计算机显示的是补码,用补码计算
但计算机最后还是用原码读数