十六进制按位运算

时间:2012-04-21 12:42:17

标签: binary bit-manipulation endianness hex

我正在阅读关于大而小endianness的非常有趣的课程。伪代码示例解释了如何将longInt(4字节)从big endian转换为little endian或反向事物。

    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 ;

代码就是这样,我在使用十六进制表示的第一行遇到麻烦。他们如何通过这样做提取第一个字节

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

?操作是什么

 N AND $000000FF

办?

我看到AND对二进制表示有什么作用,但是十六进制表示呢?对于下一行,我的惊讶完全一样。

谢谢和问候。

1 个答案:

答案 0 :(得分:1)

十六进制数字相当于4个连续的二进制数字,例如C< ==> 1100。按位运算在等效的二进制表示上运行。