美文网首页
第二章《信息的表示和处理》(一)

第二章《信息的表示和处理》(一)

作者: ShawnIsACoder | 来源:发表于2018-10-21 18:10 被阅读0次

    虚拟内存是什么

    虚拟内存是一个抽象的非常大的字节数组。主要包含两个重要的作用(参考这里)

    • 扩展内存大小限制:放了防止内存被程序耗尽,虚拟内存会通过各种机制来扩展实际内存的大小,例如使用磁盘空间

    • 简化寻址过程:参考文章中有个非常好的例子,见下方

      学校里有N个学生,每个同学都有自己的名字(物理地址),但是当他们被分配到各个班里座位上的时候,老师并不需要知道他们的名字就可以用座位的几排几列(虚拟地址)来指代学生*

    十六进制有什么作用

    二进制用于表示较大值的数字时,非常冗长。例如,表示一个字节,也就是8位信息时,二进制的值域为[00000000,11111111],映射为现实中常用的十进制,也就是[0,255]而已,我们需要用一种更为简单的方法来表示信息

    那么为什么不考虑使用十进制呢?

    因为,计算机中信息的最小载体是,位的本质也就是0或1(可以理解为‘是’或‘否’的含义)。用十进制来表示信息很难转换为计算机中用来表示信息的模式。

    而比较方便的形式是八进制十六进制(8=23,16=24),它们都能以较短长度的值来描述一定的信息,并且能够很轻易的将信息转换为计算机中的位模式

    在这两者之间,表示同样的信息,十六进制的值长度是肯定小于八进制的值长度的

    注:十六进制的数字都是以0x开头作为标识的

    字’大小的重要性

    在第一章中,我们了解到了什么是’字‘(计算机总线总是传递定长的的字节块,这个字节块的容量被称为1字

    常见的'字'有4字节和8字节的,也就是耳熟能详的32位64位

    字长决定的最重要的系统参数就是虚拟空间的最大大小

    为什么字长能够决定虚拟空间的大小?原因如下:

    虚拟内存的每一个字节都由一个唯一的数字来标识,称为它的地址地址是用一个字来编码的

    对于32位系统而言,地址的取值区间只有[0,(2^32)-1],那么我们就可以计算出虚拟地址空间的最大大小为2^32字节 = 4GB

    注意:我们称呼程序为32位程序64位程序时,指的是程序编译时是32位的还是64位的,而不是由其运行时的机器类型决定的

    寻址与字节顺序

    对于跨越多字节的程序对象,我们必须确定两个存储规则:

    1. 这个对象的地址有是什么
    2. 在内存中如何排列这些字节

    在几乎所有的机器上,跨越多字节的程序对象都是以连续的内存空间进行存储的

    例如:一个int类型(32位)的变量x的地址值为0x100,那么x变量被存储在0x100、0x101、0x102和0x103这4个位置中

    那么这么一个4字节的int类型变量每个字节的值是如何在内存中排列的呢?

    通常来说有两种排列方法

    1. 把数据的地位值到高位值按照从左到右的方式依次排列,称为小端法
    2. 把数据的高位值到地位值按照从左到右的方式依次排列,称为大端法

    例如:x变量的十六进制值为0x01234567,那么大端法和小端法的存储方式如下:

    类型 0x100 0x101 0x102 0x103
    大端法 01 23 45 67
    小端法 67 45 23 01

    大端法小端法只是两个方式,本质上没有优劣之分,且在大多数情况下,机器所使用的字节排列顺序都是不可见的。但需要了解,有些时候,字节顺序可能会导致一些问题。

    相关文章

      网友评论

          本文标题:第二章《信息的表示和处理》(一)

          本文链接:https://www.haomeiwen.com/subject/toabzftx.html