CSAppという2-2の整数表現と計算

ディレクトリ

1つの整数

2つの整数の符号化がある:一方は、唯一の非負の数(番号0よりも大きい)を表すことができ、別のは、ゼロ、正の負表すことができます。

(1)整数データタイプ:

CおよびC ++のサポートは、(デフォルト)と符号なし、Javaサポートのみ署名数に署名しました。

(2)未署名コード:

別の非常に重要な属性の符号なしバイナリ表現:

W ^ 2〜0の間のそれぞれには、 - 1の間の固有の番号であり、w符号化ビット、及びその逆の値を有します。

(3)相補エンコード。

最も一般的には、署名したコンピュータ表現補完(2の補数)符号ビットである最上位ビットワード負右(負重量)として、:フォーム。

補体エンコーディングの一意 - 符号なしの表現のように、範囲内の各数値は、W符号化ビットの一意の補数で表すことができます。

詳細には、2つの注意があります。

A)補数の範囲は非対称である:| TMIN | = | Tmaxが| + 1、すなわち、TMINはない対応する正 - 負の数は、ビットの一般的なパターン(符号ビット数である)、その他を示します。半分は負でない数を表し、0は、それが負の1未満の正の数で表すことができ、非負です。

UMAX = 2TMax + 1:b)の2倍の最大値よりも最大符号なしの値はわずか1大を補完。

- ポイント注ある:最大UMAXを補完し、同一の符号なしのビット表現-1 - フル1を介して、両方の文字列表現に0の値が全てゼロであるています。

。C言語の標準は、符号付き整数を表すために使用補数形式を必要としませんが、ほとんどすべてのマシンのをやっている
ポータビリティプログラムのために、開発者が手動で値の範囲を表し、ということを想定していない変更されませんので、その他の特殊な表現を使用します署名しました。

  • 拡張:逆アセンブラは、多くの16進数、これらの値を表すために、典型的な補数形式ですべてが含まれている実行可能プログラムファイルは、これらのファイルのより読みやすいASCIIコードに変換されています。
    逆アセンブラによって生成された番号を認識し、その意味を理解することができ、重要なスキルです。

(4)数と符号なしの数表記の間の変換器と:

C言語は、デジタルデータの様々なタイプの間で行わキャストを可能にします。

ほとんどのC言語を達成するため、プロセスは、シンボルと符号なしの数の間の同一のワード長原則変換があります番号が変更される可能性があり、ビットパターンに格納された値がローレベルになることはありません

符号付きと符号なしの数字(5)C言語

12345U、または0x1A2Bu:デフォルトでは、ほとんどのデジタルは、符号なしの数を作成するために、署名されている、あなたは接尾辞「U」または「u」、例えばを追加する必要があります。

Cの場合と同様に言語printfインジケータとそれぞれの出力値、、 %对%u及び%x桁を形成する符号付き10進、符号なしの10進および16進数を表します。

継続するには...

おすすめ

転載: www.cnblogs.com/shoufeng/p/11524987.html