近期笔试题C/C++---1

2014-11-24 12:50:42 · 作者: · 浏览: 0

view plaincopy to clipboardprint
/*
请编写函数:
unsigned int reverse_bites(unsigned int value);
这个函数的返回值是把value的二进制位模式从左到右交换一次后的值。例如,在32位机器上,25这个值包含下列各个位:
00000000000000000000000000011001
函数的返回值应该是2,550,136,832,它的二进制位模式是:
10011000000000000000000000000000
编写函数时要注意不要让它依赖于你的机器上整型值的长度。
*/
#include
#include
#include

size_t reverse_bites(size_t value);

int main(void)
{
int input;
printf("Please input a number\n");
scanf("%d", &input);


printf("The result after reverse is %d\n", reverse_bites(input));

system("pause");
return 0;
}

size_t reverse_bites(size_t value)
{
int answer = 0;
for(int i = 1; i != 0; i <<= 1)
{
answer <<= 1;
if(value & 1)
answer |= 1;
value >>= 1;
}
return answer;
}

作者“xhz1234的专栏”