C言語の拾い直しの道(2)

2752 ワード

なぜ32ビットオペレーティングシステムは最大4 Gメモリしかサポートできないのですか?
32ビットオペレーティングシステム、32ビットCPU、アドレス空間ビット2^32次方、計算は4294967296バイトで、4 G、32ビットシステムは最大4 G空間をサポートし、32ビットシステムが4 G以上の空間をサポートしたい場合は、PAEの特殊なコアを使って、特殊な方法でアクセスし、
64ビットのオペレーティングシステムは64ビットのCPUに協力して、アドレス空間は2^64次方で、計算するのは18446744073709551616バイトです
10進法をバイナリ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
"
,a); //64636261 // , }

このセグメントコードはよく述べられています.私が宣言したint、オペレーティングシステムは私たちのために4バイトのメモリ空間を開きましたが、私たちは強制的にcharに変換しました.では、私が付与した4つのcharはちょうど前にintオペレーティングシステムが私のために開いた空間をカバーしています.だから、私たちはこのように付与した後、abcdの4つのASCIIコードを印刷します.