0

ビッグエンディアンとリトルエンディアンに関する非常に興味深いレッスンを読んでいます。擬似コード サンプルでは、​​longInt (4 バイト) をビッグ エンディアンからリトル エンディアンまたはその逆に変換する方法が説明されています。

    Function Reverse (N:LongInt) : LongInt ;
     Var B0, B1, B2, B3 : Byte ;
    Begin
    B0 := (N AND $000000FF) SHR  0 ;
    B1 := (N AND $0000FF00) SHR  8 ;
    B2 := (N AND $00FF0000) SHR 16 ;
    B3 := (N AND $FF000000) SHR 24 ;
    Reverse := (B0 SHL 24) OR (B1 SHL 16) OR (B2 SHL 8) OR (B3 SHL 0) ;
    End ;

コードがそうで、1行目から16進数表記で困っています。それを行うことによって、彼らはここで最初のバイトをどのように抽出しますか

B0 := (N AND $000000FF) SHR  0 ;

? 操作は何ですか

 N AND $000000FF

行う?

AND が 2 進数表現に対して何をするかはわかりますが、16 進数表現はどうでしょうか? そして、私の驚きは次の行でも同じです。

ありがとうございます。

4

1 に答える 1

1

16 進数は 4 つの連続する 2 進数に相当します (例: C<==> ) 1100。ビット演算は、同等のバイナリ表現で動作します。

于 2012-04-21T12:45:38.360 に答える