一、原码、反码、补码
原码
一个数转化成二进制。
用最高位来表示正负,最高位为0表示正数,最高位为1表示负数。
例如:
short i=5;
因为在java里short占2个字节转化成二进制就是 00000000 00000101
所以 00000000 00000101就是5的原码
short i=-5;
因为负数的最高位是1
所以 10000000 000000101 就是-5的原码
反码
正数的反码不变,负数的反码就是在原码的基础上,符号位不变,其他位取反(0变1,1变0)。
5的反码: 00000000 00000101
-5的反码:11111111 11111010
补码
正数的补码还是不变,负数的补码就是在反码的基础上做+1运算
5的补码:00000000 00000101
-5的反码:11111111 11111011
总结:正数的反码、补码都不变。
负数的反码、最高位不变其余为取反。
负数的补码的反码的基础上加1。
0的原码和反码有两种形式但补码只有一只形式,0的原码有两种形式00000000 00000000 和10000000 00000000
对应的0的补码也有两种形式  00000000 00000000 和11111111 11111111
0的补码只有个一种              00000000 00000000
为何要要使用原码、反码和补码?
二、运算符
1、算数运算符
+,-,*,/(正斜杠),%(取模)
2、自加、自减运算符
++,--
++x 和 x++的区别?
inti,a,b;
a=5;
b=5;
i=++a;
System.out.println("i="+i);//结果 i=6
System.out.println("a="+a);//结果 a=6
i=b++;
System.out.println("i="+i);//结果 i=5
System.out.println("b="+b);//结果 b=6
++x先自己累加,在计算正个公式
x++计算整个公式,再计算自己
3、关系运算符
>,>=,
==,!=
注:一个等号叫做赋值,两个等号判断真或假
关系运算符的结果只有两个要么true,要么false
inta,b;
a=5;
b=5;booleanc;
c=a==b;
System.out.println(a
System.out.println(c);//结果:true
4、位运算符
位运算符把数值转换成二进制进行计算
例:int a=5;
int b=9;
因为它们是int型
所以在内存中占4个字节,共32位
5二进制:    00000000 00000000 00000101
9二进制:    00000000 00000000 00001001
5和9上下同位各自进行计算
&(与)运算符
上下只要有一位为0则结果为0
上下都是1时结果才为1
5&9 二进制结果:00000000 00000000 00000001 转成十进制结果:1
|(或)运算符
上下只要有一位为1则结果肯定为1
上下都是0结果才为0
5|9二进制结果:00000000 00000000 00001101 转成十进制结果:13
^ (异或)运算符
上下全是0,或者全是1,总之上下数字相同的话该结果为0
上下一个0一个1结果为 1
5^9 二进制结果:00000000 00000000 00001100 转成二进制:12
~ (非)运算符
~运算符是对单个数字的二进制取反
例如 ~9  二进制是:0110  转成二进制:
5、位逻辑运算符
&& 与
|| 或
! 非
6、位移运算符
<< 左移
>> 右移
7、赋值运算符
操作符描述例子
=
简单的赋值运算符,将右操作数的值赋给左侧操作数
C = A + B将把A + B得到的值赋给C
+ =
加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数
C + = A等价于C = C + A
- =
减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数
C - = A等价于C = C -
A
* =
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数
C * = A等价于C = C * A
/ =
除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数
C / = A等价于C = C / A
(%)=
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数
C%= A等价于C = C%A
<< =
左移位赋值运算符
C << = 2等价于C = C << 2
>> =
右移位赋值运算符
C >> = 2等价于C = C >> 2
&=
按位与赋值运算符
C&= 2等价于C = C&2
^ =
按位异或赋值操作符
C ^ = 2等价于C = C ^ 2
| =
按位或赋值操作符
C | = 2等价于C = C | 2
8、三目运算符
?:; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。
例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);//结果为i = 8.因为5 > 3为true,所以i = 5 + 3.

运算符的优先级

java求一个数的补码 java 补码 反码_java 计算反码