二进制数字的表示
- 每个数字用八位代替
- 用第一个数字当做符号,1 代表负数,0 代表正数
1 的原码可以表示为:00000001
-1 的原码可以表示为:10000001 计算机二进制的数值都是以补码的形式存在
原码相加: 10000001 00000001 ------------- 10000010 -1+1=-2 补码相加: 00000001 ???????? ------------- 100000000(1溢出,因此输出为00000000) ?=11111111 因此-1的补码为11111111
原码、反码与补码
- 原码:即二进制数值本来的表示形式
- 反码:正数的反码是它本身,负数的反码是符号位不变,其他位取反
补码:正数的补码是它本身,负数的补码是反码加一
+0 原码 00000000 反码 00000000 补吗 00000000 -0 原码 10000000 反码 11111111 补码 (1)00000000 -0的最高位溢出了,所以补码也解决了-0和0的值不同的问题
进制之间的转换
十进制转其他进制
- 短除法,转多少进制就除多少
N 进制转十进制
转换公式:
- $a^{\star} n^{i-1}+a^{\star} n^{i-2}+\ldots+a^{\star} n^{1}+a^{\star} n^{0}$
例子:
- $(11001) 2=1^{\star} 2^{4}+1^{\star} 2^{3}+0^{\star} 2^{2}+0^{\star} 2^{1}+1^{\star} 2^{0}=(16+8+0+0+1) 10=(25)_{10}$
反编译
字符本质上还是数字
java—>class(字节码文件)—> 反编译(IDEA)