C语言重拾之路(2)

为什么32位操作系统只能最大支持4G内存?

32位操作系统,配合32位CPU,寻址空间位2^32次方,计算出来是4294967296字节,就是4G,32位系统最大支持4G空间,如果想要32位系统支持4G以上空间的话,就要用PAE的特殊内核,采用特殊方式访问,

64位操作系统配合64位CPU,寻址空间是2^64次方,计算出来是18446744073709551616字节

十进制转换为二进制32位如何实现

#include
using namespace std;
int main(){
    int a[32]={0};
    int n = 0;
    int num;
    scanf("%d",&num);
    while(num){
         a[++n] = num%2;
         num = num/2;
    }
    for(int i = 31;i>0;i--){
        printf("%d",a[i]);
    }
}

对指针的理解

C语言指针定义

      int a;
      int *p = &a;  // 定义指针变量
      *p = 5;

c语言指针空间

#include
using namespace std;
int main(){
     int a;
     char *p = (char*)&a;
     *p = 'a';
     *(p+1) = 'b';
     *(p+2) = 'c';
     *(p+3) = 'd';
     printf("%x\n",a);  //64636261
     //可以自己手动一下,

}

该段代码很好的阐述了,我声明的int,操作系统就为我们开辟了4字节内存空间,但是我们强制转换成了char,那么我赋值的四个char刚好覆盖了之前我声明int操作系统为我开辟的空间,所以我们用这种方式进行赋值后,打印会生成abcd的四个ASCII码。

你可能感兴趣的:(C)