本文主要是介绍把一个无符号整型数字的二进制序列反序后输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
函数原型:
unsigned int reverse_bit(unsigned int value);
这个函数的返回值是value二进制位模式从左到右翻转后的值。思路:这里我们采用效率较高的一种方法——位操作
我们先定义一个变量sum = 0,把sum作为value反序后的数。
利用 value按位与1得到的就是value二进制序列的最低位,例如value=0101,那 0101 & 0001 = 1;这样我们就得到了value的最低位——1,然后把0001左移31位,再按位或上sum,
那sum=10000000 00000000 00000000 00000000。
接下来把value右移1位,按位与1,再把得到的值左移30位按位或sum,按这样的步骤循环32次后得到的sum就是value反序后的值。
下面上代码:
unsigned int reversal_bit(unsigned int value)
{int i = 0;unsigned int sum = 0;for (i = 0; i < 32; i++){sum |= (((value >> i) & 1) <<(31 - i));//大家想想这里(value>>i)&1 可不可以换成value&(1<<i) ?}return sum;
}int main()
{unsigned int number = 25;unsigned int ret = reversal_bit(number);printf("%u\n", ret);system("pause");return 0;
}
25反序后的值:
这篇关于把一个无符号整型数字的二进制序列反序后输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!