计算机体系结构

来源:互联网 发布:js 同级下一个元素 编辑:程序博客网 时间:2024/05/11 02:59
正如你在2.1课中所学到的--基本的寻址和变量的定义,现代机器上的记忆通常被组织成字节大小的单位,每个单元都有一个独特的地址。在这一点上,它是有用的认为记忆是一束分支或邮箱,我们可以把和检索信息,和变量作为访问这些分支或邮箱名称。
然而,这个比喻在一个方面是不正确的-大多数变量实际上占用了超过1个字节的内存。因此,一个单一的变量可以使用2,4,甚至8个连续的内存地址。变量使用的内存量是基于其数据类型的。幸运的是,因为我们通常访问内存,通过变量名称和内存地址,编译器在很大程度上能够隐藏与不同大小的变量,从我们的工作的细节。
有几个原因,它是有用的,知道多少内存的变量占用。

首先,更多的内存是可变的,它可以容纳更多的信息。因为每一位都只能持有一个0或1,我们说的有点可以拥有2个可能的值。


以偏概全,变量N位可以容纳2N(2到N,通常也写了2 ^ N)的权力可能值。因为一个字节是8位,一个字节可以存储28(256)的可能值。
该变量的大小限制了它能存储的信息量,可以存储更多字节的变量可以保持更大范围的值。当我们进入不同类型的变量时,我们将进一步讨论这个问题。
其次,计算机有一个有限的内存量。每一次我们声明一个变量,一小部分的空闲内存被使用,只要变量是存在的。因为现代计算机有很多的记忆,这通常不是问题,特别是如果只声明几个变量。然而,对于需要大量的变量(如100000)的程序,使用1个字节和8个字节的变量之间的差异可以显着。
然而,你可能在你的系统变量的大发现(尤其是int,这通常是4字节)。
C++的基本数据类型的大小
明显的下一个问题是“不同的数据类型的内存有多大?“。你可能会惊讶地发现,一个给定的数据类型的大小是依赖于编译器和/或计算机体系结构!
C++保证基本数据类型都会有一个最小尺寸:


12345678910111213141516171819#include <iostream> int main(){    using namespace std;    cout << "bool:\t\t" << sizeof(bool) << " bytes" << endl;    cout << "char:\t\t" << sizeof(char) << " bytes" << endl;    cout << "wchar_t:\t" << sizeof(wchar_t) << " bytes" << endl;    cout << "char16_t:\t" << sizeof(char16_t) << " bytes" << endl; // C++11, may not be supported by your compiler    cout << "char32_t:\t" << sizeof(char32_t) << " bytes" << endl; // C++11, may not be supported by your compiler    cout << "short:\t\t" << sizeof(short) << " bytes" << endl;    cout << "int:\t\t" << sizeof(int) << " bytes" << endl;    cout << "long:\t\t" << sizeof(long) << " bytes" << endl;    cout << "long long:\t" << sizeof(long long) << " bytes" << endl; // C++11, may not be supported by your compiler    cout << "float:\t\t" << sizeof(float) << " bytes" << endl;    cout << "double:\t\t" << sizeof(double) << " bytes" << endl;    cout << "long double:\t" << sizeof(long double) << " bytes" << endl;    return 0;


0 0
原创粉丝点击