【问题标题】:Hexadecimal bitwise operations十六进制位运算
【发布时间】:2012-04-21 12:42:16
【问题描述】:

我正在阅读关于大小endianness 的非常有趣的课程。一个伪代码示例解释了如何将 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 ;

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

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

?什么操作

 N AND $000000FF

做吗?

我看到了 AND 对二进制表示的作用,但是十六进制表示呢?接下来的几行让我感到惊讶。

感谢和问候。

【问题讨论】:

    标签: binary bit-manipulation endianness hex


    【解决方案1】:

    一个十六进制数字相当于 4 个连续的二进制数字,例如C 1100。按位运算对等效的二进制表示进行操作。

    【讨论】:

      猜你喜欢
      • 2015-03-30
      • 1970-01-01
      • 2012-06-21
      • 2013-06-12
      • 2012-09-12
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多