Python----计算机基础(架构、进制、原码、反码、补码)

133 阅读5分钟

 一、计算机体系架构

1.1、计算机架构

1.2、内存

1.3、计算机中的进制

1.3.1、二进制

  • 定义:二进制是一种仅使用两个数字(0和1)表示值的数制系统。它是计算机内部数据处理和存储的基础。

  • 特性

    • 每一位的权重是2的幂次。最右边的位(最低位)对应 2020、其左边的位对应 2121、2222,依此类推。
    • 例如,二进制数 1011 表示 
    • 1×2^3+0×2^2+1×2^1+1×2^0=8+0+2+1=11(十进制)。

1.3.2、八进制

  • 定义:八进制是以8为基数的数制,使用数字0到7表示一个数值。

  • 特性

    • 每一位的权重是8的幂次,从右往左分别是 8080、8181、8282等。
    • 例如,八进制数 17 表示 1×8^1+7×8^0=8+7=15(十进制)。
    • 八进制常用于简化表现二进制数据,如文件权限。

1.3.3、十进制

  • 定义:十进制是我们日常生活中最常用的数制,基数为10,使用数字0到9。

  • 特性

    • 每一位的权重是10的幂次。
    • 例如,十进制数 345 表示 
    • 3×10^2+4×10^1+5×10^0=300+40+5=345。
    • 十进制是最直观的计算方式,广泛应用于日常生活和商业活动中。

1.3.4、十六进制

  • 定义:十六进制是一种以16为基数的数制,使用数字0到9和字母A到F表示数值,其中A到F分别代表10到15。

  • 特性

    • 每一位的权重是16的幂次。
    • 例如,十六进制数 1A3 表示 1×16^2+10×16^1+3×16^0=256+160+3=419(十进制)。
    • 十六进制常用于计算机科学,因为它可以更紧凑地表示二进制数据。一个十六进制位能够表示四个二进制位,简化了计算机内存中的数据表示。

二、数字在计算机中的存储

2.1、原码

  • 定义:原码是用二进制数直接表示数值及符号的编码方式。

  • 表示:最高位代表符号位(0表示正数,1表示负数),其他位表示数值部分。

  • 例子

    • 正数 5 的原码(假设用8位表示)是 00000101
    • 负数 -5 的原码是 10000101

2.2、反码

  • 定义:反码是对原码的一种表示方式,用于简化负数的运算。

  • 表示

    • 正数的反码与原码相同。
    • 负数的反码是将原码中的每一位(除了符号位)取反:0变1,1变0。
  • 例子

    • 正数 5 的反码是 00000101
    • 负数 -5 的原码是 10000101,所以反码为 11111010

2.3、补码

  • 定义:补码是对反码的一种优化,广泛用于计算机中表示整数。

  • 表示

    • 正数的补码等同于原码和反码。
    • 负数的补码是反码加1。
  • 例子

    • 正数 5 的补码是 00000101
    • 负数 -5 的反码是 11111010,所以补码为 11111011(反码加1)。

2.4、正数的原码、反码、补码

以正数 5 为例(8位表示):

  • 原码00000101
  • 反码00000101
  • 补码00000101

2.5、负数的原码、反码、补码

以负数 -5 为例(8位表示):

  • 原码10000101
  • 反码11111010
  • 补码11111011

2.6、正数和负数相加

进行正数和负数相加时,通常使用补码进行运算。以下是加法步骤:

  1. 将正数和负数都转化为补码。
  2. 逐位相加,得到结果。如果有进位,考察最高位的进位。
  3. 如果结果是负数,则根据补码规则得到相应的原码表示。

例子 :

10+(-5)

10:
    原码:  0000  1010
    反码:  0000  1010
    补码:  0000  1010
    
-5: 
    原码: 0000  0101
    反码: 1111  1010
    补码: 1111  1011

10 + (-5): 
    -10补码: 0000  1010
     5 补码: 1111  1011
----------------------------------
结果的补码:  1 0000  0101
1超出存储空间: 所以舍去
所以结果为 0000  0101

-10+5

-10:
    原码:  1000  1010
    反码:  1111  0101
    补码:  1111  0110 
    
5: 
    原码: 0000  0101
    反码: 0000  0101
    补码: 0000  0101

-10 + 5 
    -10补码: 1111 0110
     5 补码: 0000 0101
----------------------------------
结果的补码:    1111 1011

需要将结果转换为原码:
    补码: 1111 1011 
    反码: 1111 1010
    原码: 1000 0101  == -5 

三、思维导图