【计算机组成原理】2、二进制和十六进制转换,进制相减、内存地址偏移计算与容量计算

一、进制转换

1.1 二进制转十六进制

2 4 = 16 2^4=16 24=16,所以每4个二进制位,可表示为1个十六进制。例如如下:

  • 00001111(B) = F(H)、0xF、0x0F
  • 11111111(B) = FF(H)、0xFF
  • 111100001111(B) = F0F(H)、0xF0F
  • 1111111100001111(B) = FF0F(H)、0xFF0F

1.2 十六进制转二进制

每1个十六进制 转换为 4个二进制位即可。例如如下:

  • 0xF0F = 111100001111(B) = 0000111100001111(B)
  • 0xFF0F = 1111111100001111(B)

二、进制相减

2.1 十六进制

例如:0xA000 - 0x0800

  • 先从末尾开始减:最后两位的0x0000-0x0000 = 0x0000
  • 再倒数第三位相减 0x0000 - 0x0800,因为不够减,所以借位得到16(因为是十六进制相减),即 16 - 8 = 8
  • 在倒数第四位相减 0xA000 - 0x0000,因为已经被借走了一位,则变为 0x9000 - 0x0000 = 0x9000
    故最终答案为 0x9800

PS:类比二进制相减即容易理解了

三、内存地址偏移计算

在这里插入图片描述

例如:若一栋楼共100层,最底为第0层,则最顶为第99层。因为从0到(n-1)共有n个数,如下图:

在这里插入图片描述

3.1 根据首末地址,求存储容量

题目 如下:
在这里插入图片描述
如下图所示,首地址是 30000H,末地址是 AFFFFH。

因为题目说明内存以字节编制,则说明即每个地址是一个字节(即楼房的每层放了1个byte,即8个bit)。

题意问存储容量,即问能存储多少 bit。


题解如下:

  • 先求楼层数:

    • AFFFF(H) - 30000(H) + 1 = 7FFFF(H) + 1 = 80000(H)
    • 而 80000(H) = 1000-0000-0000-0000-0000(B) = 2^19,即 2 ^ 19 Bytes
      在这里插入图片描述
    • 2 1 0 = 1 K 2 ^ 10 = 1K 210=1K 2 2 0 = 1 M 2 ^ 20 = 1M 220=1M 2 3 0 = 1 G 2 ^ 30 = 1G 230=1G
    • 故 2 ^ 19 bytes = 2 9 2^9 29 * 2 10 2^{10} 210 = 2 9 K b y t e s 2^9 Kbytes 29Kbytes = 2 9 K B 2^9 KB 29KB = 512 KB
      在这里插入图片描述
  • 故最终答案为能存储 512 KB 的容量(如下图):

在这里插入图片描述

3.2 根据末地址 和 存储容量,求首地址

题目如下:

在这里插入图片描述


题解如下:

若题目未指明,则默认每个地址为 1个字节。

因为共 2KB 即 2K Bytes 即 2048 Bytes,需将 2000(十进制)转换为 十六进制。

因常识为 1024 = 2 10 2^{10} 210,故 2000 = 2 11 2^{11} 211 = 2后面1个0(B) = 1000-0000-0000(B) = 800(H) 即 0x800。详见下图:

在这里插入图片描述

而因公式为 存储空间 = 末地址 − 首地址 + 1 存储空间 = 末地址 - 首地址 + 1 存储空间=末地址首地址+1,故 首地址 = 末地址 − 存储空间 + 1 首地址 = 末地址 - 存储空间 + 1 首地址=末地址存储空间+1 = 9FFF(H) - 0800(H) + 1(B)= A000(H) - 0800(H) = 9800(H)。详见下图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jiaoyangwm/article/details/131343279