Memory address


メモリアドレス
コンピュータの数字はバイナリ、8進数、16進数を使用します.コンピュータのデータを処理するのに適しているため、16進数を使用することが多い.正確には、バイナリ形式で処理されたデータを表現するのに適しています.人間が理解している十進数は、コンピュータがデータを処理する16進数に比べて不適切であり、2進数と16進数を比較すれば分かる.
10進法→16進法
十進法二進法十六進法650000100 x 41
  • の16進数を使用する理由の1つは、変換に適していることです.4 bitは16進数で表示できるので変換しやすいです.
  • 1 byteの場合、16進数は8 bit(4 bit+4 bit)を表すのに適しています.上記の0100 0001のバイナリ数は、16進数41で表すことができる.(0 xは16進数を表す)
  • メモリアドレス
    位置
    (n)
    宣言変数nが
  • である場合、上記のテーブルに対応するメモリに格納される位置を仮定する.Cからアドレスの位置値を受信すると、そのフォーマットは、0x7ffe00b3adbc(例)のように16進数で表される.
  • プロセスユニット
    オペレーティングシステムにはデータの処理ユニットがあります.処理ユニットが大きいほど、CPUが一度に処理する容量が多くなり、速度が速くなる.通常は32 bitと64 bitの処理ユニットが用いられるが、現在ではほとんどのオペレーティングシステムが64 bitのデータ処理ユニットに置き換えられている.
    処理ユニットにデータが異なるため、32ビットの制限は64ビットオペレーティングシステムに取って代わられ、32ビットオペレーティングシステムは64ビットオペレーティングシステムで使用されるプログラムを実行できない.反対は可能だ.
    CPUのレジスタはオペレーティングシステムのデータ処理ユニットと同じであるため、32ビットオペレーティングシステムではRAMの最大容量は4 GB程度に制限される.これは,最大32 bitのアドレスしか割り当てられず,2の32承認4294967296,つまり4 GBを超えるとアドレスを持つことができないため,制限点といえる.
    64ビットは16 EBに相当する非常に大きなセルであるため、非常に大きなセルアドレスを行うこともできる.
    ししん
    Cでは、演算子はメモリアドレス値を受信する役割を果たす.変数に貼り付けると、変数はポインタ、すなわちアドレス値を指す変数として機能します.
    #include <stdio.h>
    
    int main(void) {
      int a = 1;
      int *p = &a;
    }
    上記のコードから、変数pは変数aのアドレス値を有する.(&aは値ではなくアドレスを表します)、変数のアドレスを含む演算子です.アドレスの値は通常のデータ型に含めることはできません.コンパイラによって制限されます.
    しかし,ユーザはアドレスの値を正確に知る必要がないため,抽象的に変数*pが変数aのアドレスを指すと理解しても問題はない.