ほとんどの人はすでに知っているかもしれませんが、コンピューターはビット (0 と 1) のみを理解、保存、処理できます。
でもなぜ?
結局のところ、2 値の信号は、従来の 10 進数の表現よりも簡単かつ確実に表現、保存、送信できることがわかりました。たとえば、パンチカードの穴の有無、高低などの表現が可能です。ワイヤ上の電圧、または時計回りまたは反時計回りの磁区としてなど。
さらに、単一のビットは通常、コンピューターで意味のあるものを表すのにあまり役に立ちませんが、一連のビットを組み合わせれば、任意の有限集合を表すことができます。たとえば、ビットを負/非負および浮動小数にエンコードしたり、ドキュメント内の文字や記号をエンコードしたりできます。これが、メモリのアドレス指定可能な最小単位として 8 ビットまたは 1 バイトを使用する理由 (またはそうでない可能性もあります) です。 2 進表記では、その値の範囲は 00000000 ~ 11111111 です。10 進整数として見ると、その値の範囲は 0 ~ 255、16 進数では 00 ~ FF の範囲になります。 2 進数表記への変換、または 2 進数表記からの変換が容易なため、通常はビット パターンを 16 進数 (0 ~ 9、A ~ F) で記述します。
C プログラミング言語では、0x または 0X で始まる数値定数は 16 進数として解釈されます。 「A」から「F」までの文字は、大文字または小文字で書くことができます。たとえば、数字 FA1D37B を 0xFA1D37B、0xfa1d37b、または大文字と小文字を混ぜて書くこともできます (例: 0xFa1D37b)。
それでは、もう 1 つ説明しましょう。
CS の期間はあと少しです!!!
仮想メモリ - メモリ内の概念的な大規模なバイト配列 (他にもありますが、このシリーズの後半で説明します)
メモリ アドレス - メモリのバイトを識別するために使用される一意の番号。
仮想メモリ空間 - 可能なすべてのメモリ アドレスのセット (詳細は後で説明します)。
ワード サイズ - ポインター データの公称サイズまたは仮想メモリ アドレスの最大サイズ。
今日のコンピューターのワード サイズは 32 ビットまたは 64 ビットです。つまり、プログラムは 0 ~ 2^32 - 1 (32 ビットの場合) および 0 ~ 2^64 - 1 (32 ビットの場合) の範囲にアクセスできます。 64 ビット) の仮想アドレス。 64 ビット マシンでコンパイルされたプログラムのほとんどは 32 ビット マシンでも実行できますが、その逆は当てはまりません。
コンピューターとコンパイラーは、整数や浮動小数点、さまざまな長さなど、さまざまな方法でデータをエンコードする複数のデータ形式をサポートしています。たとえば、多くのマシンには、単一バイトだけでなく、2 バイト、4 バイト、および 8 バイトの量として表される整数を操作するための命令があります。また、4 バイトおよび 8 バイトの量として表される浮動小数点数もサポートします。一部のデータ型の正確なバイト数は、プログラムのコンパイル方法によって異なります。以下に一般的な 32 ビット プログラムと 64 ビット プログラムのサイズを示しました。
マシンのビット数とコンパイラ設定の間の混乱を避けるために、ISO C99 では、コンパイラやマシン設定に関係なくデータサイズが固定されるいくつかのデータ型が導入されました。上のスクリーンショットでわかるように、その中には int32_t と int64_t が含まれています。固定サイズの整数型を使用することは、プログラマがデータ表現を厳密に制御するための最良の方法です。
サインオフする前に - さまざまなマシンやコンパイラに移植できるコードの作成を試みる必要があります。移植性の 1 つの側面は、プログラムをさまざまなデータ型の正確なサイズに依存しないようにすることです。 64 ビット マシンへの移行に伴い、32 ビット プログラムを新しいマシンに移行する際のバグとして、多くの隠れたワード サイズの依存関係が発生しました。たとえば、多くのプログラマは歴史的に、int 型として宣言されたオブジェクトをポインタの格納に使用できると想定していました。これは、ほとんどの 32 ビット プログラムでは正常に機能しますが、64 ビット プログラムでは問題が発生します。これは、上で説明したように、32 ビット マシンと 64 ビット マシンのワード サイズまたはポインタ サイズが異なるためです。
わかりました。今日はここまでです。ありがとうございます。
参考: コンピューター システム: プログラマーの視点
以上が現代のコンピューターにおける情報の表現と操作 - パート 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。