1.编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。 如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 2550136832
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
unsigned int reverse_bit(unsigned int value){
int ret = 0;
for (int i = 0; i < 32; i++){
ret <<= 1;
ret |= ((value >> i) & 1);
}
return ret;
}
int main(){
int value = 0;
scanf("%d", &value);
unsigned int ret = reverse_bit(value);
printf("%u", ret);
system("pause");
return 0;
}
2.不使用(a+b)/2这种方式,求两个数的平均值。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int avgSum(int a,int b){
int sum = 0;
if (a > b){
sum = a - b;
}
else{
sum = b - a;
}
int cha = sum / 2;
int avgsum = cha + ((a < b) ? a : b);
return avgsum;
}
int main(){
int a = 0,b = 0;
scanf("%d %d", &a, &b);
printf("%d\n",avgSum(a, b));
system("pause");
return 0;
}