编写函数:unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
unsigned int Reverse(unsigned int k)
{
int i = 0;
unsigned int res = 0;
for (i = 0; i < 32; i++)
{
res += ((k >> i) & 1) << (31 - i);
}
return res;
}
int main()
{
unsigned int k = 25;
printf("%u", Reverse(k));
system("pause");
return 0;
}
使用逻辑算法交换两个数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void Swap(int num1, int num2)
{
num1 = num1^num2;
num2 = num1^num2;
num1 = num1^num2;
printf("After Swap:%d %d",num1, num2);
}
int main()
{
int num1 = 13;
int num2 = 32;
printf("Before Swap:%d %d\n", num1, num2);
Swap(num1, num2);
system("pause");
return 0;
}
不使用(a+b)/2这种方式,求两个数的平均值
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 5;
int k = 13;
int res = (i + k) >> 1;
printf("%d", res);
system("pause");
return 0;
}
.编程实现:
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i = 0;
int arr[] = { 1, 2, 3, 4, 3, 2, 1 };
int len = sizeof(arr) / sizeof(arr[1]);
for (i = 1; i < len; i++)
{
arr[0] ^= arr[i];
}
printf("%d", arr[0]);
system("pause");
return 0;
}
有一个字符数组的内容为:“student a am i”, 请你将数组的内容改为"i am a student".
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
void reverve_swap(char *left, char *right)
{
assert(left != NULL); //断言不是空指针
assert(right != NULL);
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
char *reverve(char *p)
{
int len = strlen(p);
char *start = p;
char *end = NULL;
char *ret = p;
reverve_swap(p, p + len - 1); //逆序整个字符串
while (*p)
{
start = p;
while ((*p != ' ') && (*p != '\0')) //找到一块单词
{
p++;
}
end = p - 1;
reverve_swap(start, end);//逆序单个单词
if (*p == ' ') //找到空格
p++;
}
return ret;
}
int main()
{
char arr[] = "student a am I";
printf("%s\n", reverve(arr));
system("pause");
return 0;
}