情報セキュリティシステム設計基礎第3週学習総括-呂松鴻
6957 ワード
第2章情報の表示と処理
(一)、三つの重要な数字表示
符号なし数:符号化は、従来のバイナリ表現(ゼロ以上の数)に基づいている.
符号化:符号化は、符号付き整数を表す最も一般的な方法(正または負の数字)である.
浮動小数点数:符号化は実数を表す科学記数法の2を基数とするバージョンである.
整数の表現は比較的小さい数値範囲しか符号化できないが、正確である.一方,浮動小数点数は大きな数値範囲を符号化できるが,この表現は近似的な表現である.
大量のコンピュータセキュリティの脆弱性は、コンピュータ演算の微妙な細部に起因しています.
(二)、情報記憶
コンピュータの最小アドレス可能なメモリ単位-バイト
1バイトの値ドメイン:00 H-FFH
一、十六進法
1.C表現
0 xまたは0 Xで始まる数値定数は16進数です
2.進数変換
常用進数:バイナリ(B)、10進数(D)、8進数(OまたはQ)、16進数(H)
バイナリ-16進数相互変換に変換され、バイナリの4桁の数字は16進数の1桁の数字に対応します.
同様に,バイナリと8進数の変換は3ビット対応1ビットである.
しかし、通常、進数変換はバイナリを橋渡しとして変換される.
注意:特殊な状況
教科書23ページには、表す数字定数x=2のn乗の場合、n=i+4 j、かつ0≦i≦3の場合、先頭の16進数が1(i=0)、2(i=1)、4(i=2)、8(i=3)であり、j個の16進数の0に続く場合がある.ここでjは4ビット毎のバイナリビットに対応する16進数ビットを表し、iの範囲は16進数の各ビットの範囲が0−Fであり、最大8まで収容できるからである.これは便利で速い計算方法です.
二、字
ワード長は、仮想アドレス空間の最大サイズを決定します.
ワード長w,仮想アドレスの範囲1−(2^w−1)
w=32または64:つまり、私たちが一般的に言っているコンピュータは32ビットですか、64ビットですか.CPUが一度にデータを処理するビット数としても理解できる.
三、データサイズ
異なるワード長のコンピュータでは、同じデータ型で使用されるバイト数は異なり、32ビットと64ビットの違いは教材26ページの表を参照してください.
gcc -m32 64 32
四、アドレスとバイトの順序
1.小端法と大端法
2.強制型変換
五、文字列を表す
c言語における文字列はnull(値0)文字で終わる文字配列に符号化される
コマンドman ascii:ASCII文字コードテーブルを取得
六、表示コード
バイナリコードは、異なるオペレーティングシステム上で異なる符号化規則を有する.バイナリコードは互換性がありません
七、ブール代数
1.最も単純なブール代数:&または|非~異或^(結果は0または1)
2.拡張ブール演算:ビットベクトルの演算(結果はやはりビットベクトル)
ビットベクトルの応用:有限集合を表し、集合を符号化する
八、ビットレベル演算
1.ビットベクトルをビット毎に論理演算し、結果はビットベクトルである
2.マスク演算
マスク:選択的に使用されるマスク信号は、1文字から選択されたビットの集合を表すビットモードである.
ビットベクトルで集合符号化し、マスクを指定することによって選択されたマスクがあるか、いくつかの信号をマスクしないか、あるビット位置が1である場合、信号iが有効であることを示す.0は、この信号が遮断されていることを示す.このマスクは有効信号の集合を表す.
0 xFF:最小有効バイトを除く全てのバイトをブロックします.
~0:全1のマスクを生成
九、論理演算
1.論理演算子:&&または非!
2.計算方法:ゼロ以外のすべてのパラメータはTRUEを表し、0パラメータはFALSEを表す.1はTRUE、0はFALSE
十、シフト演算
1.左に移動<<
2.右に移動>>
論理右シフト:左端にk個の0を補い、符号なしシフト演算に用いることが多い
算術右シフト:左端にk個の最高有効ビットの値を補間し、符号数シフト演算に用いることが多い.
(三)、整数表示
一、整数型データ型
整数型データ型:制限された範囲の整数を表し、各タイプはキーワードでサイズを指定したり、非負数(unsigned)か負数(デフォルト)かを指定したりすることができます.これらの異なるサイズの割り当てられた文字数は、マシンの文字長やコンパイラによって異なります.
値範囲について
具体的な範囲は本38ページを参照してください.
C99 “long long” , gcc -std=c99
二、符号数のない符号化
コーディング方法は本を見て、すでに多くの授業で勉強しました.
シンボル数のないバイナリ表現の重要な性質に注意してください.
0−(2^w)−1の各整数と長さwのビットベクトルは1つ1つに対応する.
三、補符号化——符号数のある符号化
補数については、注意していない知識があるかもしれません.
記号数のある他の表現方法:
四、符号数と符号数のない変換
1.強制型変換
ビットレベルの観点から考える.
強制タイプ変換の結果は、ビット値を一定に維持し、これらのビットを説明する方法を変更しただけです.すなわち、これらのビットの値は変化しないが、最高有効ビットの重みが変化するため、結果が変化する.
2.c言語における符号数と符号数の有無とその変換
変換の原則:最下位のビットは変更されません.
(1)符号数あり→符号数なし
六、一つの数字のビット表示を拡張する
拡張:数値を一定に保ちながら、小さなデータ型から大きなデータ型に変換します.
1.ゼロ拡張:先頭に0を付けます.符号なしでより大きなデータ型に変換するために使用されることが多い.
2.シンボル拡張:最大有効ビットのコピーを追加します.マルチコードディジタル変換
七、切断
トランケート:数値を表す桁数を減らします.このようにすると、その値が変わる可能性があります.これもオーバーフローの形式です.
1つのwビットの数をkビット数に切断すると、高いw-kビットが破棄されます.
(四)、浮動小数点数
浮動小数点は、V=x(2^y)のような形の有理数を符号化することを示し、以下に適用される.
0
一、バイナリ小数
小数のバイナリ表現は,x X(2^y)と書くことができる数のみを表し,他の値は近似的にしか表すことができない.
ウェイト(Weight)
小数点以下:
i , 2 i i , 1/2 i
二、IEEE浮動小数点表示
IEEE浮動小数点基準:
V=(-1)^s X 2^E X M : :s 。0 。 :E , 2 E ( ) :M , 1~2-ε 0~1-ε(ε=1/2 n )
コード規則:
s s, 1
k exp E n frac M( 0)
2つの精度
1.正規化された値
すなわちexpのビットパターンが0でも1でもない場合が最も一般的で最も一般的であるため規格化されている.
2.非正規化の値
すなわち、ステップコードドメインがすべて0の場合の数である.
3.特殊値
特殊値は,階層ビットがすべて1のときに現れる.2つのケースに分けられます.
(1)無限
小数点以下のフィールドはすべて0です.
(2)NaNは数ではない
小数点フィールド0以外
三、捨入
丸め演算:数値xに最も近い一致値x′を見つけ、所望の浮動小数点形式で表すことができる.
IEEE浮動小数点フォーマットでは、4つの異なる丸め方法が定義されています.
1.偶数に丸め(デフォルトの方法)
すなわち、数値を上または下に切り捨て、結果の最小有効数は偶数です.
バイナリ小数に使用できます.
2.端数処理
すなわち、整数を下に丸め、負数を上に丸める.
3.端数処理
正と負の両方を切り捨てます.
4.端数処理
正数も負数も切り上げます.
四、浮動小数点演算
1.浮動小数点加算
2.浮動小数点乗算
五、c言語の浮動小数点数
int、float、double相互変換?
int → float int/float → double double → float ±∞, float/double → int , 。