03_内存(计算机科学)

2017-11-20  本文已影响0人  yishurensheng

带着问题学习(内存)

内存的物理结构

image.png
        上图中展示的是一个内存条,它也是一个IC(集成电路)。
        内存一般采用半导体存储单元,包括随机存储器(RAM)、只读存储器(ROM)以及高速缓存器(CACHE)。
参考于百度百科 memory physical structure.png
        上面是一张最简单的内存物理结构图,它有A0A9共100个地址引脚,也就是说能够寻址的范围是从0000000000到1111111111,共1024个地址值;而数据引脚是从D0D7共8个,也就是8bit,即1byte。所以上图展示的内存总大小为10248bit=1KB。所以我们得出内存的容量 = 寻址范围 * 一次性写入的大小。*

内存的逻辑结构

memory logical structure.png

        上图展示的是一个容量为1KB的内存逻辑结构图。从图上我们不难看出,内存中的每一个地址能够存储的数据是8bit,也就是一个byte,并且地址空间都是连续的。

不同数据类型在内存中的存储方式

        我们常用的数据类型,比如char(1byte)和int(4byte),它们在内存中是怎样存储的呢?
        对于char来说很简单,一个地址空间就能够存放下了,如下图所示,我们可以在地址为0001处存放一个char类型数据。但是对于int来说,该怎样存储呢?因为int类型的数据占用4byte,所以一个地址肯定存放不下,这时候,我们就将下面连续的4个地址空间都分配给int类型的数据变量(整个黄色区域都是代表int的作用域)。当然在取int类型的数据时候,也必须取4个地址的数据才正确,否则取出来的数据将是作物的数据。这就是计算机数据结构设计的一种存储方式。


data type.png

常用的几种数据结构的优缺点

程序是如何运行的 试卷一

  1. CPU中不含有以下选项中的:C
    A:运算器
    B:寄存器
    C:内存
    D:时钟
  2. CPU中负责计时的部件是:B
    A:程序计数器
    B:时钟
    C:控制器
    D:靠人来计时
  3. 对于汇编以下说法正确的是:B
    A:汇编要编译成机器码
    B:汇编是助记符,和机器码一一对应
    C:汇编是给CPU看的
    D:编译器编译出来的是汇编
  4. 以下哪个寄存器名是错的?D
    A:累加寄存器
    B:程序计数器
    C:标志寄存器
    D:控制寄存器
  5. 以下哪个说法是错误的?C(控制器是用来控制基本操作的,比如去哪里读、去哪里写、内存地址是多少等操作)
    A:计算机能够执行分支是因为标志寄存器
    B:计算机能够执行循环是因为程序计数器
    C:控制器控制程序的分支及循环运行
    D:标志寄存器负责保存计算后结果的状态
  6. 请写出二进制,八进制,十进制,十六进制(9之后使用字母顺序)
二进制 八进制 十进制 十六进制
00000000 00 0 0x00
00000001 01 1 0x01
00000010 02 2 0x02
00000011 03 3 0x03
00000100 04 4 0x04
00000101 05 5 0x05
00000110 06 6 0x06
00000111 07 7 0x07
00001000 010 8 0x08
00001001 011 9 0x09
00001010 012 10 0x0A
00001011 013 11 0x0B
00001100 014 12 0x0C
00001101 015 13 0x0D
00001110 016 14 0x0E
00001111 017 15 0x0F
00010000 020 16 0x10
00010001 021 17 0x11
00010010 022 18 0x12
00010011 023 19 0x13
00010100 024 20 0x14
00010101 025 21 0x15
00010110 026 22 0x16
00010111 027 23 0x17
00011000 030 24 0x18
00011001 031 25 0x19
00011010 032 26 0x1A
00011011 033 27 0x1B
00011100 034 28 0x1C
00011101 035 29 0x1D
00011110 036 30 0x1E
00011111 037 31 0x1F
  1. 请使用公式写出二进制数0 1110 0001 1000 0011 1000对应的十进制,需要解题步骤:
    答:首先将上面的二进制转换为十六进制,如下所示:
    0 1110 0001 1000 0011 1000
    0 E 1 8 3 8
    =816^0 + 316^1 + 816^2 + 116^3 + 14*16^4
    =8 + 48 + 2048 + 4096 + 917504
    =923704

  2. 假设一个32位带符号(有负数)的二进制数0111 0010 1110 1111 0011 1111 0000 1100,请写出对应的十进制数。
    答:首先将上面的二进制转换为十六进制,如下所示:
    0111 0010 1110 1111 0011 1111 0000 1100
    7 2 E F 3 F 0 C
    =1216^0 + 0 + 1516^2 + 316^3 + F16^4 + E16^5 + 216^6 + 7*16^7
    =12 + 0 + 3840 + 12288 + 983040 + 14680064 + 33554432 + 1879048192
    =1928281868

  3. 假设一个32位带符号(有负数)的二进制数1111 0010 0010 1111 0011 0110 0000 1100,请写出对应的十进制数。
    答:因为最高位是1,所以是负数,先减1,然后取反,得到二进制,转换成十进制,再加上负号就是计算的结果。
    1111 0010 0010 1111 0011 0110 0000 1100
    减1,如下所示:
    1111 0010 0010 1111 0011 0110 0000 1011
    取反,如下所示:
    -(0000 1101 1101 0000 1100 1001 1111 0100)
    对应的十六进制为:
    -(0 D D 0 C 9 F 4)
    =-(416^0 + 1516^1 + 916^2 + 1216^3 + 0 + 1316^5 + 1316^6)
    =-(4 + 240 + 2304 + 49152 + 0 + 13631488 + 218103808)
    =-231786996

  4. 假设二进制数(16位)0101 1111 0000 1111左移3位,结果是:
    二进制:1111 1000 0111 1000
    十进制:-1928
    十六进制:0xF878

  5. 假设二进制数(16位)0101 1111 0000 0000逻辑右移3位,结果是:
    二进制:0000 1011 1110 0000
    十进制:3040
    十六进制:0xBE0

  6. 假设二进制数(16位)0101 1111 0000 0000算术右移3位,结果是:
    二进制:0000 1011 1110 0000
    十进制:3040
    十六进制:0xBE0

  7. 假设二进制数(16位)1101 1111 0000 0000算术右移3位,结果是:
    二进制:1111 1011 1110 0000
    十进制:-1056
    十六进制:0xFBE0

  8. 请问一下代码输出的结果是 C
    Int main()
    {
    float sum = 0;
    for(int i=0; i<100; i++)
    {
    Sum += 0.1;
    }
    printf(“%f\r\n”, sum);
    }
    A:10.0000000
    B:10.0000002
    C:不知道(因为浮点数计算肯定是存在偏差的,具体偏差多少,可能与CPU的不同而不同,所以结果是不确定的,也就是未定义的操作!即使是double类型变量,也不能够精确的表示所有的小数,只有一些特殊的小数才能精确表示,比如0.5/0.25/0.125等,如果想精确运算,只能用整数来表示。)
    D:1.0000000

  9. 内存为什么有地址,我们是通过什么计算出内存的大小的?
    答:因为内存芯片中有地址引脚,通过引脚找到内存地址,进而找到这个地址里面存储的值,一个内存地址中存储的数据大小和内存读取指针有关,所以:
    内存的大小=寻址范围*一次读写大小。一次读写大写一般是8bit。

  10. 编程时读取和写入内存速度最快的数据结构是:A
    A:数组
    B:栈
    C:队列
    D:链表

  11. 请说明一下上一题中几种数据结构的优势。
    数组:读写速度非常快;
    栈:便于数据记录和回溯;
    队列:便于数据的顺序操作;
    链表:便于元素的插入和删除。

  12. 程序是在内存中执行的:A
    A:对
    B:错

  13. 所有的数据都是一直(包括关机时)存储在:C
    A:内存
    B:CPU
    C:硬盘
    D:我脑子里

上一篇 下一篇

猜你喜欢

热点阅读