什么意思呢?就是将 ABCD 变成 DCBA。这里的ABCD代表字节。
这个方法是在嵌入式系统课程中学到的,效率很高,该方法只用了一个临时变量而且不使用循环语句。
方法如下:
1 | unsigned long func(unsigned long v) { |
第一步: t = v ^ ((v << 16) | (v >> 16))
,得到
第二步:t &= ~0xff0000
,得到
~0xff0000
的结果为f0ff
(字节为单位),则有
即
第三步:v = (v << 24) | (v >> 8)
得到v = D000 | 0ABC
第四步:v ^ (t >> 8)
t >>8
得到
v ^ (t >> 8)
得到
最后
有关这方面的知识可以到这里了解,里面介绍了大量的位运算技巧