如:
在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
/*编写函数
unsigned int reverse_bit(unsigned int value);
这个函数的返回值吧value的二进制位模式从左到右翻转后的值。
如在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
*/
#include <stdio.h>
#include <math.h>
int reverse_bit(unsigned int value)
{
int ret = 0;
int bit = 0;
int i;
for( i=0; i < 32; i++)
{
ret = ret << 1; //左移一位,保存前一位
bit = value & 1; //取出最后一位
value = value >> 1;//值右移,取下一位
ret = bit | ret; //最后一位赋给ret
}
return ret;
}
int main()
{
printf("%u\n",reverse_bit(25));
return 0;
}
不使用(a+b)/2这种方式,求两个数的平均值
举个例子,a有15块钱,b有5块钱,使a和b的钱数相等。
int main(){
int a = 15;
int b = 5;
printf("%d\n", b+((a-b) >> 1));
system(“pause”);
}