情報セキュリティシステム設計基礎第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.強制型変換

  • である.
  • typedef:名前付きデータ型
  • sizeof():戻りタイプのバイト数(メリット?移植の容易さ-32ビットと64ビットの違い)
  •  
    五、文字列を表す
    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
  • 論理演算は、パラメータが0または1に制限されている場合にのみ、ビット単位演算と同じ動作をする.
  • 最初のパラメータを評価すると式の結果が決定され、論理演算子は後のパラメータを評価しません.

  •  
    十、シフト演算
    1.左に移動<<
    2.右に移動>>
    論理右シフト:左端にk個の0を補い、符号なしシフト演算に用いることが多い
    算術右シフト:左端にk個の最高有効ビットの値を補間し、符号数シフト演算に用いることが多い.
  • Java中用>>算術右シフトを表し、>>>論理右シフトを表す
  • シフト演算優先度は算術演算
  • より小さい.

    (三)、整数表示


    一、整数型データ型


    整数型データ型:制限された範囲の整数を表し、各タイプはキーワードでサイズを指定したり、非負数(unsigned)か負数(デフォルト)かを指定したりすることができます.これらの異なるサイズの割り当てられた文字数は、マシンの文字長やコンパイラによって異なります.
    値範囲について
  • 32ビットマシンと64ビットマシンは、同じデータ型の典型的な値範囲に対して異なる.
  • の典型的な値範囲では、値範囲は非対称であり、負数の範囲は整数の範囲より1大きい.
  • c言語標準で定義された各データ型が表すことができる最小の値範囲のうち、正数と負数の値範囲は対称である必要があります.

  • 具体的な範囲は本38ページを参照してください.
     C99 “long long” ,  gcc -std=c99

    二、符号数のない符号化


    コーディング方法は本を見て、すでに多くの授業で勉強しました.
    シンボル数のないバイナリ表現の重要な性質に注意してください.
    0−(2^w)−1の各整数と長さwのビットベクトルは1つ1つに対応する.

    三、補符号化——符号数のある符号化


    補数については、注意していない知識があるかもしれません.
  • 符号化の最上位は符号ビットを表し、負の重みと解釈され、「重み」は−2の(w−1)次数、すなわち符号なし表現における重みの負の数であることが知られている.符号ビットは1、表示値は負、符号ビットは0、表示値は非負(正ではない、0があるため)
  • である.
  • 補符号のマッピング関係は、同様に1つ1つに対応する
  • である.
  • 補符号の範囲:-2^(w-1)~2^(w-1)-1、すなわち|TMin|=|TMax|+1--非負数の0が存在するためである.
  • 符号なし符号化(U)および補符号化(T):UMax=2 TMax+1
  • の多くの場合、符号数が符号化され、典型的な値範囲がある.

  • 記号数のある他の表現方法:
  • 原号
  • 逆符号
  • 四、符号数と符号数のない変換


    1.強制型変換


    ビットレベルの観点から考える.
    強制タイプ変換の結果は、ビット値を一定に維持し、これらのビットを説明する方法を変更しただけです.すなわち、これらのビットの値は変化しないが、最高有効ビットの重みが変化するため、結果が変化する.

    2.c言語における符号数と符号数の有無とその変換


    変換の原則:最下位のビットは変更されません.
    (1)符号数あり→符号数なし
  • 非負数-
  • を一定に保つ
  • 負数-大正数(2)無符号数に変換→有符号数2のw-1次方を限界とする:
  • より小さい-
  • を一定に保つ
  • より大きい-負の値
  • に変換
    六、一つの数字のビット表示を拡張する
    拡張:数値を一定に保ちながら、小さなデータ型から大きなデータ型に変換します.
    1.ゼロ拡張:先頭に0を付けます.符号なしでより大きなデータ型に変換するために使用されることが多い.
    2.シンボル拡張:最大有効ビットのコピーを追加します.マルチコードディジタル変換
     
    七、切断
    トランケート:数値を表す桁数を減らします.このようにすると、その値が変わる可能性があります.これもオーバーフローの形式です.
    1つのwビットの数をkビット数に切断すると、高いw-kビットが破棄されます.
  • 符号なし数ではmod 2の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つの精度

  • 単精度(float)、k=8ビット、n=23ビット、合計32ビット;
  • デュアル精度(double)、k=11ビット、n=52ビット、合計64ビット.

  • 1.正規化された値


    すなわちexpのビットパターンが0でも1でもない場合が最も一般的で最も一般的であるため規格化されている.

    2.非正規化の値


    すなわち、ステップコードドメインがすべて0の場合の数である.

    3.特殊値


    特殊値は,階層ビットがすべて1のときに現れる.2つのケースに分けられます.
    (1)無限
    小数点以下のフィールドはすべて0です.
    (2)NaNは数ではない
    小数点フィールド0以外

    三、捨入


    丸め演算:数値xに最も近い一致値x′を見つけ、所望の浮動小数点形式で表すことができる.
    IEEE浮動小数点フォーマットでは、4つの異なる丸め方法が定義されています.

    1.偶数に丸め(デフォルトの方法)


    すなわち、数値を上または下に切り捨て、結果の最小有効数は偶数です.
    バイナリ小数に使用できます.

    2.端数処理


    すなわち、整数を下に丸め、負数を上に丸める.

    3.端数処理


    正と負の両方を切り捨てます.

    4.端数処理


    正数も負数も切り上げます.

    四、浮動小数点演算


    1.浮動小数点加算

  • 浮動小数点加算は交換可能な
  • である.
  • 浮動小数点加算は結合性がない
  • のほとんどの数値の浮動小数点加算には逆元があり,無限とNaNを除く.
  • 浮動小数点加算単調性
  • を満たす

    2.浮動小数点乗算

  • 浮動小数点乗算は交換可能な
  • である.
  • 浮動小数点乗算結核性を有さない
  • 浮動小数点乗算の単位は1.0
  • である.
  • 浮動小数点乗算加算に分配性を備える
  • .

    五、c言語の浮動小数点数


    int、float、double相互変換?
    int → float   int/float → double   double → float  ±∞,  float/double → int  , 。