奥行きのコンピュータシステムの理解 - 第2章で情報を表現し、操作します

処理および情報の表現
情報記憶部において、アナログ信号が役割を果たし得るが、そこ干渉の多くので、デジタル信号の導入、バイナリ表現、異なる0/1に相当する電圧範囲になり、非常に単純なものとすることができるので正確な値が表す
単一または0/1の1ビットは、いくつかの説明である0/1の論理的な組み合わせによって、完全かつ複雑な情報を表していない、それは十分に複雑な情報を表現することができる、デジタルコンピュータが表されていますビットは、ビット0/1である
ことのデジタル実世界の運転中に、コンピュータで表現し、操作する方法、表現の基本的な単位?バイナリ方法は、整数があり、これらは示されたコードに対応するバイナリを介してコンピュータにあり、現実の世界に浮かびます。
伝統的な方法に基づいて、符号なし2進符号化表現は0> =整数表現することができる。補数符号化表現は整数を署名され、浮動小数点符号化は、ベース2科学的表記法として使用される
現実世界必要に応じて数が無限であることができるが、コンピュータは、物理ハードウェアであり、ビットビットのコンピュータが制限されるためにのみ、有限の数を表すことができ、常にデジタル表現の上限のうち数字の組み合わせがありますこれは、数値のオーバーフローの範囲を超え(オーバーフロー)が発生され、予測不可能な値を取得し
、その後、彼らは現実の世界では、数値、数学的な表記法では、数学的な演算を実行する必要がコンピュータに適用されていません。算術コンピュータは基本的に出会い、フロート整数ビットは、根本的な理由は、それ自体がコンピュータの使用中に表現されたときに整数表現の近似値が正確であることである満たしていない
コンピューターでこれらの値を理解する必要が表す理由の背後には、原理および関連する動作ルール、手順の調製におけるプログラマ、異なるマシンプラットフォームの下で数値計算を確保する必要性、オペレーティングシステムとして、コンパイラは、適切な動作が可能であり、コンピューティングハッカーを防ぐために抜け穴を見つけることので攻撃は、事前に良い仕事の保障を行います

コンピュータの語長に、即ち、32ビット、64は仮想アドレス空間の大きさを表し、番号を使用するアドレスビットではなく、ハードウェアの決定を示し、したがって、同じコンピュータシステムは32/64を設置してもよいです。コンパイル時にプログラムが、機械32は、プログラム64、64をコンパイルすることができますが、プログラムが唯一の64ビットマシン上で実行できるように、32ビット/ 64ビットコンパイラを選択することができます。
異なるコンパイラデータ解釈異なるバイト長の同じタイプを生成することが可能であり、そのプログラムが異なるマシン移植で実行するようにコンパイルすることができる可能にするために、ISO C99は、データタイプの固定バイト長を導入し、そしてint32_t int64_tの、整数型の大きさを正確に表現することができる制御データを用いて決定されます。プログラマとコンパイラのためのプログラムが異なるマシン上で正常に実行できるようにする必要があります。

バイト順序は、
ビッグエンディアンとリトルエンディアンである
ビッグエンディアン方式は、リトルエンディアンは上部の最下位バイトで、上部の最上位バイトで、2つの方法で、これは技術的にすべき選択する多くの理由がありません種、マシンが表現するデータとしてそれらを解釈することができるようになります。
ポイントに注意してください。ほとんどの時間は、バイト順序を気にしません。今すぐコンピュータ表現を使用して、小端モバイルプロセッサながら、ビッグエンディアンを使用して、ネットワークのデータ伝送、したがって機械の小端を確保するために、ネットワーク伝送中に小さなオフを計画の順序に従うために必要なデータを受け取りましたそれは正しく解釈することができます。ノートを見たときには、別のは、生成された逆アセンブラデータ、小端部であります

文字列の末尾がnull / 0で、文字列は任意のマシンのパフォーマンスに、符号化されているが、バイト順序、ワードサイズとは無関係に同じです。

長さバイトマシンごとに異なるデータ型が異なります
(またはビット)^(異所性)〜(ビット否定)|ビット演算&(ビット)
&& ||論理演算子(0を! FALSE、他の非ゼロの値がTRUEである、リターン0または1であり、早期に終了することができる)
+ 0、 -符号付き数、最上位ビットが1のため、符号ビットを表す
符号なしの式に含まれ、署名された場合数は、数が符号なしの暗黙の型変換に署名される
絶対数を達成するためにどのように?

INT 7 = I;
INT配列[7];
のための(I-はsizeof(アレイ)> = 0; I-)
{...}
の例では、左側の発現を比較し、その戻り値は、符号なし数でのsizeofを使用しその後、左から符号なしへの暗黙的変数I、

符号なしのオペランドに、符号なしの数は、常に無限ループに周期0より大きい。C / C ++、その必要性の注目に
符号拡張
ターゲット:X整数符号付きWビットを考えると、+ k個のビットWと同じ値に変換され、それは少し
のルールを左に拡張k個の符号ビットをコピーすることによって、拡張するので元の位置ビットの(値)の影響が発生する対抗。元の値と同じだから、

整数を表し
、符号なしの符号化を(補体)符号化シンボルを有します。データを表すために使用されるすべての符号化ビットの符号なしのビットは、最小値が0、2の最大値であるW. 1、番号コード化されたプレゼンテーションを締結相補最上位ビットは符号ビットであり、重量は-2 W. Cは、コーディング符号付き2の補数として所定の数を使用していないが、基本的補数の符号付き数字が示しています。

キャスト
符号なしと符号付きの数との間の変換の原理は、それがオーバーフローすることが可能であり、低レベル残っ一定でした。
システムプログラマーのための符号なしが有用であることができ、例えば、アドレスは、多くの利点よりもトラブルをもたらしたアプリケーションの数のための普遍的なシンボルなしで、署名のない使用して回避しようと、符号なしの値であり、そしていくつかの組み込み関数(のような:はsizeof()に戻り、符号なしですが、それと他の暗黙的なキャストが署名したオペランドが符号なしになったときに、起こる)エラーが発生することがありますが、また、これらの分野に特別な注意を払います

拡張ビットの数を示す
ように、符号なし数0は前に直接添加され、前方のシンボル数が伸長位置と元の位置に発生するので、左にオフセット効果(値)に拡張子を追加することがあります元の値と同じ

整数演算
の限られた性質の計算に
C言語では、エラー信号としてオーバーフローはない
余分なビットは、最上位シンボル番号の最終ビット判定Nカットオフ値を失われ乗算符号付きおよび符号なし乗算溢れて発生しますネガは、認識していないが、符号計算の元の値こと
値が大きすぎる値である場合は補加算が行われ、負のオーバーフローが発生し、小さすぎる正のオーバーフローが発生し
、直接逆0,1、最下位ビットプラス1に、逆の数を取ります(-6)1010-> 0110()

1.フロート方法を示す
2.丸め問題(丸め)
数学的性質3.加算、乗算および関係演算子を

アイデア:最初の10進浮動小数点数は、バイナリ浮動小数点数、32ビット/ 64ビット数として書き換えるバイナリ浮動小数点標準のIEEE浮動小数点の再利用として表さ
便利ここで8ビット(合計長さ8ビットのデジタル表現、8を用いて:例えば、ビット、むしろ32/64)よりも
0.125の小さな値(1/8)、4ビット、3ビットFRAC)00000001の経験、符号ビットを仮定し(浮動小数点形式で記述されたバイナリ分数0.001、として表すことができる
コアアイデアは、バイナリ浮動小数点数は、三つの部分、シンボル、両者がMであり、インデックスのための3つの32ビットで、この情報を含める必要があり、この問題を解決するためのIEEE浮動小数点標準、ここで、Sからなることです得ることができるオフセット符号化率E(E = EXP-バイアス)を介して、直接書き込まれる負、MはFRAC部、及び後部ハンドルバイナリ、0および1のための最も重要な正のビット0と1を表しますEXP部に書き込まれた符号化された値が、バイアスであり、kは正と負のインデックスは、符号化表現ショーにおける浮動小数点数だけ数字が存在し、ここで非常に重要な問題が解決し、EXPの長さ(ビット)であります正と負、負バイアスがインデックスにマッピングされます 値は、
オフセット値はEXP丁度半分の最大値として表現されることができるが、機械は、負の指数の良好な表現できるようになります。

浮動小数点表現正確に非常に多くの数は近似値である、マシン全体で表現できない:ポイントは、その音符
の2点を注意:正規化された値は1.xxxxを表し、すべての10進浮動小数点数は、1よりも大きいです小数点と1.xxxxの形態の変化を移動することによって、この要約は、すべてのフローティング、非正規化された値は、すべての浮動小数点数が1未満であると、この番組を0.xxxxを表す説明します。
浮動小数点数の詳細については、いくつかの異なる種類の、正規化された値(正規化値)、非正規化値(非正規化値)、特別な価値がある:三点があることに注意してください。最大差分値の非正規化し、正規化された値は、EXPの異なる時に符号化され、正規化された値は、すべて0 EXP部と0の非正規化された値にすることはできません、1全体の一部を残すため0は無限FRAC完全ifiniteを表すいくつかの特別な場合を扱う、NANの以外の値の数として表さFRAC
注4点:正規化された、非正規化からのスムーズな移行を確実にするために使用することができるEXPコーディング非正規化値、 1への完全な非正規FRACの最大値、FRACの値を加えた正規化された値にジャンプするときため

丸め
ビットの限られた数に起因する浮動小数点表現の制限範囲及び精度は、機械によって表されるので、それだけで近似浮動小数点実数演算を表すことができます。xの目標値は、最も近い一致が何らかの方法でのxの値、及び所望の浮動小数点形式のことを価値がある見つけます。

4つの異なる丸めがあります
(最も近い偶数2.5-> 2台の3.5インチ>、切り上げ、切り捨て、ゼロに向かって丸め 4) でも家庭へ

コンピュータでは、それらは時間の切り上げ、50%の時間の50%以来、元のデータの平均値を得るためにできるだけ近いデータセットを保証することができても丸めモードを使用します切り捨て

後者の位置精度の数は、丸められたダウンは、値が、丸みを帯びたアップより大きい未満に制御される値よりもされていても丸め方法は、最も近い偶数に丸めた値に等しいです。例えば2つの小数点以下の桁数の1.6854精度二小数点の1.69,1.6850精度二小数点の1.68,1.6849精度、1.68は
バイナリ、0は偶数であることに留意すべきである、奇数が1です、例:1001.110101精度小数点の場所の
、1001.111000精度の小数場所、1010.00; 1001.111001精度の小数場所、1010.00 1001.11

浮動小数点演算
、数値計算では、再結合や操作の順序は同じ答えを得られないかもしれ変更
プラスマイナス数に比べて非常に小さい多数の、非常に小さな数は(無視されます理由丸め)
浮動小数点3.14+(1e10-1e10)= 3.14(3.14結合性を満たしていない + 1E10)-1e10 = 0.0

C言語のデータ型の変換
低精度精度、高精度の変換による、切捨てが発生する注意が必要、ということ、丸みを帯びた、偶数オーバーフローであります

出版元の記事 ウォンの賞賛0 ビュー214

おすすめ

転載: blog.csdn.net/qq_41624560/article/details/104581026