1. 二进制概念
- 二进制是由0与1组成的机器码 即01010101
- 二进制单位是bit
- 8bit为1组 ,实际情况就是数字1 转换为二进制 00000001
- 二进制最高位为符号位,0表示正数(+),1 表示负数(-) -1 ---> 10000001 1 ----->00000001
2. 原码
- 原码就是符号位加上真值的绝对值.
例:
- [+1]原= 0000 0001
- [-1]原= 1000 0001
3. 反码
- 正数的反码是其本身;
- 负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
例
- [+1] = [0000 0001]原= [0000 0001]反
- [-1] = [1000 0001]原= [1111 1110]反
4. 补码
- 正数的补码就是其本身;
- 负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)
例
- [+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补
- [-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补
5. 原码、反码、补码(重点 难点)
- 二进制的最高位是符号位: 0正 1负
- 正数的原码,反码,补码都一样(三码合一)
- 负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)
- 负数的补码=它的反码+1,负数的反码=负数的补码-1
- 0的反码,补码都是0
- java没有无符号数,换言之,java中的数都是有符号的
- 在计算机运算的时候,都是以补码的方式来运算的.
- 当我们看运算结果的时候,要看它的原码(重点)
6. 二进制计算步骤
- 二进制计算方法步骤
- 先计算反码
- 在计算补码
- 运算符计算
- 计算的结果是补码
- 计算结果 再计算反码
- 计算结果计算的反码再计算原码
- 真正要计算的结果
7. 例子
/*
2.
10000000 00000000 00000000 00000010 ==>-2
10000000 00000000 00000000 00000011 ==>-3
11111111 11111111 11111111 11111101 ==>-2 取反
11111111 11111111 11111111 11111100 ==>-3 取反
11111111 11111111 11111111 11111110 ==>-2 取补
11111111 11111111 11111111 11111101 ==>-3 取补
11111111 11111111 11111111 11111100 ==> & 结果
11111111 11111111 11111111 11111011 ==> & 结果 取反 (补码取反 -1)
10000000 00000000 00000000 00000100 ==> & 结果 取原码
*/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。