MENU

二进制

November 28, 2021 • 编程,JAVA阅读设置

二进制数字的表示

  • 每个数字用八位代替
  • 用第一个数字当做符号,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)

Last Modified: September 13, 2023