/*
函数目的,将unsigned int类型的数据进行按位调换,0bit调换到31bit,31bit调换到0bit
*/
#include <stdio.h>
typedef unsigned int u32;
u32 rever(u32 num)
{
u32 index = 1;
u32 ver = 0,loop = 0,result=0;
for (loop = 0;loop < 32;loop++)
{
index = 1 << loop;
ver = num & index;
if (ver != 0)
{
result |= (1 << (31 - loop));
}
}
return result;
}
int main()
{
u32 n = 0;
printf("input your num:");
scanf("%x",&n);
printf("\n rever(n) = 0x%x\n",rever(n));
return 0;
函数目的,将unsigned int类型的数据进行按位调换,0bit调换到31bit,31bit调换到0bit
*/
#include <stdio.h>
typedef unsigned int u32;
u32 rever(u32 num)
{
u32 index = 1;
u32 ver = 0,loop = 0,result=0;
for (loop = 0;loop < 32;loop++)
{
index = 1 << loop;
ver = num & index;
if (ver != 0)
{
result |= (1 << (31 - loop));
}
}
return result;
}
int main()
{
u32 n = 0;
printf("input your num:");
scanf("%x",&n);
printf("\n rever(n) = 0x%x\n",rever(n));
return 0;
}
经过实际测试,对于usigned int类型完全符合预期。但是对于 < 0的int类型,暂时还没有实现
本文介绍了一种位操作技巧,用于将unsigned int类型数据的位进行反转。通过具体的C语言实现,展示了如何将32位整数的最高位与最低位交换,并提供了测试案例。
1506

被折叠的 条评论
为什么被折叠?



