ARM7 REV RBIT REV16

复制代码
 1 // Reverse the bit order in a 32-bit word.
 2 unsigned int rbit(
 3   unsigned int i )
 4 {
 5   i = ( ( i & 0x55555555 ) << 1 ) | ( ( i >> 1 ) & 0x55555555 );
 6   i = ( ( i & 0x33333333 ) << 2 ) | ( ( i >> 2 ) & 0x33333333 );
 7   i = ( ( i & 0x0f0f0f0f ) << 4 ) | ( ( i >> 4 ) & 0x0f0f0f0f );
 8   i = ( i << 24 ) | ( ( i & 0xff00 ) << 8 ) //
 9     | ( ( i >> 8 ) & 0xff00 ) | ( i >> 24 );
10   return i;
11 }
12 
13 // Reverse byte order in each halfword independently
14 // converts 16-bit big-endian data into little-endian data
15 // or 16-bit little-endian data into big-endian data
16 short rev16(
17   short s )
18 {
19   return ( s << 8 ) | ( s >> 8 );
20 }
21 
22 // Reverse byte order in a word
23 // converts 32-bit big-endian data into little-endian data
24 // or 32-bit little-endian data into big-endian data.
25 unsigned int rev(
26   unsigned int i )
27 {
28   return ( i & 0x000000FFU ) << 24 | ( i & 0x0000FF00U ) << 8
29     | ( i & 0x00FF0000U ) >> 8 | ( i & 0xFF000000U ) >> 24;
30 }
复制代码

 

posted @   IAmAProgrammer  阅读(870)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示