计算机基础知识

Mr.R0boter 于 2020-09-04 发布

系统位数

32 位:内存的最大寻址空间为 2 的 32 次方,即 32 位操作系统最大只支持 4GB 内存

64 位:理论上内存的最大寻址空间为 2 的 64 次方,但因现在的主板最大只支持 128G 内存,所以现在的 64 位系统最大也只能支持 128GB

内存

内存单元:八个比特位组成一个字节,再由无数个字节组成数据,每个字节有对应的地址。每一个字节就是一个内存单元

内存寻址即是靠每个字节的基址来寻找数据

8bit == 1byte

1024 字节 == 1Kb

1024Kb == 1Mb

1024Mb == 1Gb

1024Gb == 1Tb

进制

  1. 关于进制讨论

    • 计算机中的任何数据都是以二进制的形式存放的,但为了描述不同的问题,经常使用其他进制进行表示

    • 二进制本身可以表示一个数值的大小,但人类习惯的是十进制,使用十进制可以让人直观感受数值大小

    • 一个内存单元可以存放 8 位数据,而各种 CPU 中的寄存器又可以存放 n 个 8 位数据,所以计算机中的数据大多是由 1~N 个 8 位数据构成,使用 16 进制可以直观的看出组成数据的各个字节数据的值

    • 为了区分不同的进制,一般在 16 进制后面加 H,二进制后面加 B,十进制不加

      例 1:8086CPU 中的 AX 寄存器中存放的数据是 0100111000100000,当使用不同的逻辑意义来看,可以将其看作一个大小为十进制 20000 的数值,或者说 0100111000100000 是 20000 的二进制表示方式

      例 2:当 20000 放到计算机的内存中时,一个内存单元是 8byte,所以 20000 使用 16 进制表示为 4E20,这时我们可以直观的看出这个数据是由 4E 和 20 这两个 8 位数据构成。如果这个数据被读入寄存器 AX 中,则 AX 寄存器中存放了 4E20,AX 的高位寄存器 AH 存放的 4E,AX 的低位寄存器 AL 存放的 20

  2. 二进制:0 1 逢二进一

    0 + 0 = 0
    0 + 1 = 1
    1 + 1 = 10
    
  3. 八进制:0、1、2、3、4、5、6、7 逢八进一

    1 + 7 = 10
    1 + 2 = 3
    
  4. 十六进制:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f 逢十六进一

    1 + f = 10
    作用:内存地址使用的十六进制数表示
    
  5. 进制转换

    十进制 -> 二进制:倒除法,余数逆序。将数字除以 2,余 0 则该位为 0,余 1 则该位为 1。 例:10(10) -> 1010(2)。10 / 2 得 5 余 0:为第 0 位,5 / 2 得 2 余 1:为第 1 位,2 / 2 得 1 余 0:为第 2 位,1 / 2 得 0 余 1:为第 3 位

    二进制 -> 十进制:当前数字乘以 2 的当前位数的次方,最后相加

    例:1010(2) -> 10(10)。0x2^0 + 1x2^1 + 0x2^2 + 1x2^3 = 0 + 2 + 0 + 8 = 10

    八进制 -> 二进制:一转三位,八进制的一位代表二进制的三位,以十进制转换

    例:35(8) -> 11101(2)。3(10) -> 011(2)和 5(10) -> 101(2) = 011101(2) = 11101(2)

    十六进制 -> 二进制:一转四位,十六进制的一位代表二进制的四位,以十进制转换

    例:6e(16) -> 1101110(2)。6(10) -> 0110 和 14(10) -> 1110(2) = 01101110(2) = 1101110(2)

    二进制转八进制:三位一取,从低位开始,高位不足,以 0 补齐

    例:11101(2) -> 35(8)。低位开始 101(2) -> 5(10) 和 高位不足,补 0,即 011 -> 3(10) 最后合成 35

    二进制转十六进制:四位一取,从低位开始,高位不足,以 0 补齐

    例:1101110(2) -> 6e(16)。低位开始 1110(2) -> 14(10) -> e(16) 高位补 0,0110(2) -> 6(10) 最后合成 6e

  6. 数据的存储:先分配空间,再存储数据,计算机分配空间的最小单位是字节,在存储数据时,最高位标识符号,1 表示负数,0 表示正数

    例:

    +10 = 00000000000000000000000000001010

    -10 = 10000000000000000000000000001010

    int 型占 4 个字节,所以为 32 位。

    原码:规定了字节数,写明了符号位,就得到了数据的原码

    例:

    +1 的原码为:00000000000000000000000000000001

    -1 的原码为:10000000000000000000000000000001

    反码:正数的反码是其原码,负数的反码是其符号位不变,其他位取反

    例:

    +1 的反码是:00000000000000000000000000000001

    -1 的反码为:11111111111111111111111111111110

    补码:正数的补码是其原码,负数的补码是其符号位不变,其他位取反后在最低位加一,即负数的反码在最低位加一

    Tips1:负整数的计算,先求原码,再求反码,最后求补码。原码计算方法为:得出二进制数后在最高位前添一,即符号位

    Tips2:负整数求真值,符号位进行计算时为负数,其他位按正数计算,最后相加

    例:10000110 最高位是符号位为 1,则此数为负数,-1x2^7 + 0x2^3 + 1x2^2 + 1x2^1+ 0x2^0 = -128 + 4 + 2 = -122,所以 -122 的补码为 10000110